Я пытаюсь отсканировать строку из файла, используя следующий код. Но моя программа печатает странные символы. Любые идеи, как остановить это и как сохранить пробелы между словами при печати строки?Сканирование из файла в C
вот содержимое файла (test.txt)
Вот результат моей программы:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct
{
char word[80];
int length;
int freq;
} sent;
int main()
{
sent a[50];
int v,status;
int i=0,cnt=0;
char*y;
FILE*p;
p=fopen("C:\\Users\\User\\Desktop\\test.txt","r");
status=fscanf(p,"%s",a[i].word);
while(status !=EOF){
i++;
status=fscanf(p,"%s",a[i].word);
}
for(i=0;i<50;i++)
{
char *y=strtok(a[i].word,"[email protected]#$%&*?.");
while(y!=NULL)
{
printf("%s",y);
y=strtok(NULL,"[email protected]#$%&*?.");
}
}
}
Пожалуйста отправьте содержимое test.txt. Я предполагаю, что у вас нет 50 слов в файле. –
fscanf (p, "% s", a [i ]word); может закончиться переполнением буфера, используйте fscanf (p, «% 79s», [i] .word); или fgets(). и проверьте наличие ошибок после fopen() – 12431234123412341234123