我試圖使用下面的代碼掃描文件中的字符串。但我的程序打印怪異的字符。任何想法如何阻止這種情況,以及如何在打印字符串時在單詞之間保留空格?從文件中掃描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」,a [i] .word);或fgets()。並在fopen() – 12431234123412341234123