Programm zum Lesen von Worten aus einer Datei und die Anzahl Ihrer vorkommen in der Datei
Ich bin derzeit versucht, ein Programm, das eine Datei Lesen, finden jedes eindeutige Wort und zählen die Anzahl der Zeiten, das Wort erscheint in der Datei. Was ich derzeit habe Fragen den Benutzer nach einem Wort und sucht die Datei für die Anzahl der Male das Wort erscheint. Aber ich brauche das Programm zum Lesen der Datei selbst, anstatt den Benutzer auffordert, für ein einzelnes Wort.
Dies ist, was ich derzeit habe:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char const *argv[])
{
int num =0;
char word[2000];
char *string;
FILE *in_file = fopen("words.txt", "r");
if (in_file == NULL)
{
printf("Error file missing\n");
exit(-1);
}
scanf("%s",word);
printf("%s\n", word);
while(!feof(in_file))//this loop searches the for the current word
{
fscanf(in_file,"%s",string);
if(!strcmp(string,word))//if match found increment num
num++;
}
printf("we found the word %s in the file %d times\n",word,num );
return 0;
}
Ich brauche nur etwas Hilfe herauszufinden, wie die Datei zu Lesen, für einzigartige Wörter (es wurde nicht überprüft, für noch), obwohl andere Vorschläge für mein Programm geschätzt wird.
Sie benötigen, um eine Tabelle der Wörter, die Sie gesehen haben und wie viele Male haben Sie Sie gesehen. C nicht, einen solchen Mechanismus, so dass Sie brauchen, um Ihre eigenen oder nutzen Sie die Bibliothek, aber so etwas wie einen Baum oder hash-Tabelle angebracht wäre.
Nebenbei, nicht verwenden
Nebenbei, nicht verwenden
feof()
- Sie überprüfen sollten Sie das Ergebnis fscanf()
statt (oder zumindest den ersten).InformationsquelleAutor undone98 | 2013-03-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie drucken möchten, wird jede Zeile in der Datei enthalten sind, nur einmal, speichern Sie die Zeichenfolgen, die Sie gelesen haben, in einem bestimmten Datenstruktur. Zum Beispiel, ein sortiertes array könnte den trick tun. Der code könnte wie folgt Aussehen:
Können Sie verwenden binäre Suche (binary code die Funktionen
containString
undinsertString
in einer effizienten Art und Weise. Sehen hier für weitere Informationen.InformationsquelleAutor md5
Müssen Sie teilen Sie den code in Funktionen (Unterprogramme).
Einer Funktion Lesen Sie die Datei, und notieren Sie alle Wörter; zum anderen würde die Anzahl der vorkommen für jedes Wort.
Beachten Sie, wie die
main
Funktion ist relativ kurz. Alle details sind in den FunktionenReadWords
undCountOccurrences
.Umzusetzen, Lesen alle Wörter einer Datei:
Vergleich mit 1 wird auch überprüfen Sie die syntax-Fehler im input, nicht nur für das Ende der Datei. Hier erklärt: en.cppreference.com/w/c/io/fscanf
InformationsquelleAutor anatolyg
InformationsquelleAutor Chandra Mani