Неверный вывод из файла
Я пытаюсь ввести некоторые данные в файл, а затем прочитать и распечатать его на консоли.
Вот мой код:
fp=fopen("user1","w+");
char line[1000];
char *c;
//write on file
while(1)
{
fgets(line,sizeof(line),stdin);
if(strcmp(line,":wq\n")==0) //input ends when user enters :wq
break;
else
fputs(line,fp);
}
//read from file
fflush(stdin);
while(1)
{
c=fgetc(fp);
if(c==EOF)
break;
else
printf("%ch",c);
}
Я ввожу данные как
bjsa
: WQ
Выход:
h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h h
В чем проблема?
1 ответ
Решение
Я вижу две проблемы
1) Ваш fgetc
назначает на символ char. Это не правильно. Это должно быть Int
2) После записи файла, вы должны закрыть его, а затем открыть его для чтения
Что-то вроде:
fp=fopen("user1","w+");
char line[1000];
int c; // notice ......
//write on file
while(1)
{
fgets(line,sizeof(line),stdin);
if(strcmp(line,":wq\n")==0) //input ends when user enters :wq
break;
fputs(line,fp);
}
fclose(fp);
//read from file
fp=fopen("user1","r");
while(1)
{
c=fgetc(fp);
if(c==EOF)
break;
printf("%ch",c);
}
fclose(fp);