Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
вандал
126 / 126 / 1
Регистрация: 20.11.2009
Сообщений: 498
#1

Возникает ошибка при использовании fscanf - C++

08.06.2010, 22:33. Просмотров 767. Ответов 5
Метки нет (Все метки)

Здраствуйте. Возникла такая проблема что при попытке что-то сделать с временной строкой 'с' выдается виндовская ошибка что пямать не может быть read. даже вывести ее после сканфа не получается. помогите пожалуйста разобраться.запускается следующим образом сначала пишите исполняемый фаил затем затем фаил с которым работаете. например "\lab file.txt"


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include "stdio.h"
#include <iostream>
#include <vector>
#include <map>
#include <ctime>
#include <cstdlib>
using namespace std;
int main(int argc, char **argv) {
    FILE *fi; 
    vector<int> vt;
    map<string, vector<int> > sht;
    char b[32];
    int i = 0, instr = 1, l = 0;
    string word, c, word2;
    if(argc < 2) {
        printf("error: no input file specified\n"
            "usage: %s filename\n", argv[0]);
        goto done;
    }
    if(!(fi = fopen(argv[1], "r"))) {
        printf("error: can't open file %s\n", argv[1]);
        goto done;
    }
      clock_t timer;
        cout << "enter search word: " << endl;
    cin >> word;
    cout << "looking for word " << word << "..." << endl;
    timer = clock();
    cout << "test4" << endl;   
    c = "d";
    printf("%s", c);
    while(fscanf(fi, "%s", &c) != EOF){   
       cout << "test5" << endl;
       l = c.length();
       if((c[l-1] == ',')||(c[l-1] == '.')||(c[l-1] == '!')||(c[l-1] == '?')){
          word2.replace(0,l-1,c);
          cout << "test" << endl;
          if(word2 == sht.find(word2)->first){
             (sht.find(word2)->second).push_back(instr);
          cout << "test1"<< endl;
          }
          else{
             l = vt.size();
             for(int k; k < l; k++){
                vt.pop_back();
             }
             vt.push_back(instr);
             sht.insert(std::pair<string,vector<int> >(b,vt));
          cout << "test2"<< endl;
          } 
       }
       if(c[l-1] == '\n')
          instr++;
    }       
        cout << "test3"<< endl;
        for(int k=0;k < (sht.find(word)->second).size();k++){
               cout << "stroka # " << (sht.find(word)->second)[k] << endl;
        }
     
      cout << "std::map took " << static_cast<double>(clock() - timer)/CLOCKS_PER_SEC << " second\n";
 
done:
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2010, 22:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Возникает ошибка при использовании fscanf (C++):

возникает ошибка при использовании массива, как параметр функции - C++
Добрый вечер. Помогите разобраться, пожалуйста. Задача: Проверьте, верно ли, что количество строк матрицы А(n*n), в которой все числа...

Ошибка 0xcdcdcdcd при считывании fscanf-ом из файла в указатель - C++
Ошибка заключается в том, что при выделении памяти на указатель он каким-то боком не заполняется fscanf-ом из файла. Постоянно появляется...

Ошибка в конструкторе с параметром. Компилятор не ругается, но при запуске программы возникает ошибка - C++
Я знаю точно, что ошибка в конструкторе с параметром. Компилятор не ругается, но при запуске моей программы windows выдает ошибку. Почему ?...

Реализовать через тип данных структура. При сборке и отладки возникает ошибка. В чем ошибка? - C++
С++ в таблице из 5 строк хранятся данные о товарах: наименование, цена, количество. Определить и вывести наименование товара, цена которого...

при отладке программы возникает ошибка - C++
при отладке программы,возникает одно и то же сообщение при выводе из формулы(на фото в окне отладки) условие: Вычислить для своего...

При обработке функции возникает ошибка - C++
При компиляции возникает ошибка: результатом вычисления фрагмента не является функция, принимающая 1 аргументов Вот код программы: ...

5
kazak
3038 / 2359 / 157
Регистрация: 11.03.2009
Сообщений: 5,405
Завершенные тесты: 1
08.06.2010, 22:40 #2
fscanf со string'ами не работает)))
0
вандал
126 / 126 / 1
Регистрация: 20.11.2009
Сообщений: 498
08.06.2010, 23:19  [ТС] #3
спасибо сейчас тогда че-нить придумаю
0
][акер
#define книжный_червь Я
182 / 93 / 6
Регистрация: 30.01.2010
Сообщений: 780
08.06.2010, 23:22 #4
Сделай так:
C++
1
Переменная_типа_string.c_str()
c_str преобразует string в си-строку.
1
kazak
3038 / 2359 / 157
Регистрация: 11.03.2009
Сообщений: 5,405
Завершенные тесты: 1
08.06.2010, 23:26 #5
Для записи в string это не пойдет.
0
вандал
126 / 126 / 1
Регистрация: 20.11.2009
Сообщений: 498
09.06.2010, 17:19  [ТС] #6
даже если ввожу посимвольное считывание все равно если ставлю до конца EOF то вообще в цикл не входит а если ставлю например до какого-нить символа то цикл не останавливается и возникает виндовская ошибка память не может быть read.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <iostream>
#include <vector>
#include <map>
#include <ctime>
#include <cstdlib>
using namespace std;
int main(int argc, char **argv) {
    FILE *fi; 
    vector<int> vt;
    map<string, vector<int> > sht;
    char b[32], ch;
    int i = 0, instr = 1, l = 0;
    string word, c, word2;
    if(argc < 2) {
        printf("error: no input file specified\n"
            "usage: %s filename\n", argv[0]);
        goto done;
    }
    if(!(fi = fopen(argv[1], "r"))) {
        printf("error: can't open file %s\n", argv[1]);
        goto done;
    }
      clock_t timer;
        cout << "enter search word: " << endl;
    cin >> word;
    cout << "looking for word " << word << "..." << endl;
    timer = clock();     
    while ((ch = fgetc(fi)) != EOF){   
       if ((ch != ' ')||(ch != '\n')){
             c[i] = ch;
             i++;
       //cout << "test5" << endl;
       }
       else{
          cout << "test6" << endl;
          l = c.length();
          cout << l;
         if((c[l-1] == ',')||(c[l-1] == '.')||(c[l-1] == '!')||(c[l-1] == '?')){
             word2.replace(0,l-1,c);
             cout << word2 << endl;
             if(word2 == sht.find(word2)->first){
                vector<int>& vtt = sht.find(word2)->second;
                vtt.push_back(instr);
             cout << "test1"<< endl;
             }
             else{
                while(!vt.empty()) vt.pop_back();
                vt.push_back(instr);
                sht.insert(std::pair<string,vector<int> >(c,vt));
                cout << "test2"<< endl;
             } 
          }
          if(c[l-1] == '\n')
             instr++;
       i = 0;
       }
    }
    for( map<string, vector<int> >::iterator it = sht.begin(); it != sht.end(); ++it ){
       cout << it->first << "n";
    }
 
      cout << "std::map took " << static_cast<double>(clock() - timer)/CLOCKS_PER_SEC << " second\n";
 
done:
    return 0;
}
Добавлено через 5 часов 11 минут
всем спасибо ошибка возникала из-за того что был поврежден фаил с которого читал)
0
09.06.2010, 17:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.06.2010, 17:19
Привет! Вот еще темы с ответами:

Возникает ошибка в программе при вводе нуля - C++
Нажимаю 0 возникает ошибка в программе , хотя компилятор молчит. #include &lt;iostream&gt; using namespace std; struct d; d* head =...

При попытке чтения ini файла возникает ошибка - C++
При выполнении программы возникает ошибка, как ее исправить? #include &lt;windows.h&gt; void main() { char *out = new char;...

Возникает неизвестная ошибка при попытке скомпилировать программу - C++
#include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt; #define LIM 5.5 using namespace std; int...

Двумерный массив символов: при высвобождении памяти возникает ошибка - C++
Подскажите, что не так делаю. При высвобождении памяти выбивает ошибку.Как правильно сделать? char **str = new char*; for(int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru