Ich versuche, eine Zeichenfolge aus einer Datei mit dem folgenden Code zu scannen. Aber mein Programm druckt seltsame Zeichen. Irgendwelche Ideen, wie man das stoppt und wie man Leerzeichen zwischen Wörtern beim Drucken der Schnur behält?Scannen von einer Datei in C
hier sind die Inhalte der Datei (test.txt)
Hier ist der Ausgang meines Programms ist:
#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]#$%&*?.");
}
}
}
Bitte poste den Inhalt von test.txt. Meine Vermutung ist, dass Sie nicht 50 Wörter in der Datei haben. –
fscanf (p, "% s", ein [i] .word); kann in einem Pufferüberlauf enden, verwenden Sie fscanf (p, "% 79s", a [i] .word); oder fgets(). und nach Fehlern auf Fehler prüfen() – 12431234123412341234123