Ich versuche ein Programm zu erstellen, mit dem ich nach einem Namen in einer Textdatei suchen kann. An dieser Stelle wird das Programm mir erfolgreich mitteilen, ob der Name auf dem Dienstplan steht oder nicht, aber es wird auch jede zweite Zeile gedruckt! Zum Beispiel, wenn ich bin auf der Suche, um zu sehen, ob „Sarah“ auf der Liste sein wird, wird es sagenBeim Suchen und Drucken von Zeichenfolgen aus einer Datei wird jede Zeile gedruckt, anstatt die, die ich brauche
Sarah is not on the roster
Sarah is number 7 on the roster
Sarah is not on the roster
Ich will es einfach, mir zu sagen, wenn „Sarah“ auf der Liste ist oder nicht. Ich bin sehr, sehr neu, mir C beizubringen, also gehe ich davon aus, dass ich etwas Dummes mache.
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main(void)
{
FILE *inFile;
inFile = fopen("workroster.txt", "r");
char rank[4], gname[20], bname[20];
char name[20];
printf("Enter a name: __");
scanf("%s", name);
while(fscanf(inFile, "%s %s %s", rank, bname, gname)!= EOF)
{
if(strcmp(gname,name) == 0)
printf("%s is number %s on the roster\n", name, rank);
else
printf("%s is not on the roster\n", name);
}
fclose(inFile);
return 0;
}
Das ist, weil Sie jedes Element (oder jede Zeile) betrachten und etwas sagen. Ihr Text sollte "Artikel # 1 ist nicht Sarah", "Artikel # 2 ist nicht Sarah", "Artikel # 3 ist Sarah" und so weiter sein. Bewahren Sie die Informationen in einer Variablen auf und verschieben Sie die print-Anweisung aus der Schleife, so dass sie nur einmal ausgeführt wird. –