|
|
|
fscanf ошибка
|
|||
|---|---|---|---|
|
#18+
написала код для сохранения и вывода информации из файла. в строчке чтения fscanf - возникает какая-то ошибка, т.к. VC++ вылетает. не могу найти ошибку, запись происходит корректно (в 1 раз), помогите найти баг void CLinesView::EndGame() { CDEnd dlg(field->m_Points); dlg.DoModal(); FILE *stream; CString *buf1, *buf3; int i=0, point[20], j,num=-1, buf2, buf4; CString *name[20]; char str; if( (stream=fopen( "data.ls", "r" )) == NULL ) { stream = fopen( "data.ls", "w" ); //файла нет,создали новый fprintf(stream, "%s%d",dlg.m_name,field->m_Points); fclose(stream); }else { while (!feof(stream)) { //читаем массив. Тут VC++ вылетает fscanf(stream,"%s%d",str, point ); name->Format("%s",str); TRACE("%s,%d",name,&point); i++; }; fclose(stream); for (j=0;j<i;j++) { if (field->m_Points>point[j]){num=j; break;} }; buf1=name[num]; buf2=point[num]; name[num]->Format("%s",dlg.m_name); point[num]=field->m_Points; if (num<20) { if (i<20) {i++;}; for (j=num+1;j<i-1;j++) { buf3=name[j+1];buf4=point[j+1]; name[j+1]=buf1;point[j+1]=buf2; buf1=buf3; buf2=buf4; } } stream = fopen( "data.ls", "w" ); //файла нет,создали новый for (j=0;j<i;j++) { fprintf(stream, "%s",name[j]); fprintf(stream, "%i",point[j]); fclose(stream); }; }; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 09:17 |
|
||
|
fscanf ошибка
|
|||
|---|---|---|---|
|
#18+
не много не правильно вышло, т.к. потерялся индекс i, в строке fscanf(stream,"%s%d",str, point); странно, что не работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 09:20 |
|
||
|
fscanf ошибка
|
|||
|---|---|---|---|
|
#18+
anaisнаписала код для сохранения и вывода информации из файла. в строчке чтения fscanf - возникает какая-то ошибка, т.к. VC++ вылетает. не могу найти ошибку, запись происходит корректно (в 1 раз), помогите найти баг Или я чего-то не понимаю, или ошибка в аргументах функции. Вроде бы все scanf'ы требуют адрес переменной, а у тебя: 1. Объявление переменной: char str; 2. Использование переменной: fscanf(stream,"%s%d", str , point ); Как решить - думай :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 10:02 |
|
||
|
fscanf ошибка
|
|||
|---|---|---|---|
|
#18+
В конструкции fscanf(stream,"%s%d",str, point[ i ]); обнаружил 2 ошибки: 1. Перед point[ i ] надо писать & т.е. &point[ i ] 2. str описан каr char, следовательно один символ, в этом слусае нужно писать: fscanf(stream,"%c%d",&str, &point[ i ]); Однако, если str - строка, то надо: char str[1000]; fscanf(stream,"%s%d",str, &point[ i ]); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 14:34 |
|
||
|
fscanf ошибка
|
|||
|---|---|---|---|
|
#18+
если str - это char? то нуна: frpintf(..." %c ",...); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 14:46 |
|
||
|
fscanf ошибка
|
|||
|---|---|---|---|
|
#18+
простите я плохо прочитал вопрос...)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2004, 15:09 |
|
||
|
fscanf ошибка
|
|||
|---|---|---|---|
|
#18+
Еще один совет. В fprintf лучше всего поставить между %s и %d хотя бы пробел, а то fscanf прочитает строку неправильно (точнее он ее прочитает правильно, но заодно заберет и число в виде символов). --- С уважением, Dubrov. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2004, 16:10 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=422&tid=2033970]: |
0ms |
get settings: |
8ms |
get forum list: |
21ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 351ms |

| 0 / 0 |
