powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / fscanf ошибка
7 сообщений из 7, страница 1 из 1
fscanf ошибка
    #32817788
anais
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
написала код для сохранения и вывода информации из файла.
в строчке чтения 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);
};


};
...
Рейтинг: 0 / 0
fscanf ошибка
    #32817797
anais
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не много не правильно вышло, т.к. потерялся индекс i, в строке
fscanf(stream,"%s%d",str, point);

странно, что не работает
...
Рейтинг: 0 / 0
fscanf ошибка
    #32817900
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anaisнаписала код для сохранения и вывода информации из файла.
в строчке чтения fscanf - возникает какая-то ошибка, т.к. VC++ вылетает. не могу найти ошибку, запись происходит корректно (в 1 раз), помогите найти баг

Или я чего-то не понимаю, или ошибка в аргументах функции. Вроде бы все scanf'ы требуют адрес переменной, а у тебя:
1. Объявление переменной: char str;
2. Использование переменной: fscanf(stream,"%s%d", str , point );
Как решить - думай :)
...
Рейтинг: 0 / 0
fscanf ошибка
    #32818802
Snow Man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В конструкции
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 ]);
...
Рейтинг: 0 / 0
fscanf ошибка
    #32818844
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если str - это char? то нуна:
frpintf(..." %c ",...);
...
Рейтинг: 0 / 0
fscanf ошибка
    #32818911
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
простите я плохо прочитал вопрос...))
...
Рейтинг: 0 / 0
fscanf ошибка
    #32832734
Dubrov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще один совет. В fprintf лучше всего поставить между %s и %d хотя бы пробел, а то fscanf прочитает строку неправильно (точнее он ее прочитает правильно, но заодно заберет и число в виде символов).
---
С уважением, Dubrov.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / fscanf ошибка
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]