zählen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Hi! Hoffe es kann mir jemand bei einem kleinen Programmauszug helfen!
    Und zwar muss ich aus einer Datei "source.txt" die Zeichenfolge "str1" zählen und ausgeben.
    Ist wahrscheinlich ein schwerer Fehler, so wie ich die if- Bedingung gestellt habe, aber was besseres fällt mir nicht ein. Hoffentlich kanns mir jemand umschreiben das es funkt!
    Danke!

    Quellcode

    1. int countstr(void){
    2. FILE *source;
    3. source=fopen("source.txt","r");
    4. int counter=0;
    5. int zeichen2;
    6. while((zeichen2=getc(source)) != EOF) {
    7. if((zeichen2[0]=='s')&&(zeichen2[1]=='t')&&(zeichen2[2]=='r')&&(zeichen2[3]=='1'))
    8. counter++;
    9. }
    10. printf("\n\n");
    11. printf("Anzahl der Vorkommen von 'str1': %d\n",counter);
    12. return 0;
    13. }
    14. int main(void){
    15. ausgabe(); //Ausgabe
    16. wc(); //Wörterzählen
    17. //count(); //str1 zählen
    18. //counter();
    19. //countar();
    20. countstr();
    21. groesse(); //Dateigröße in Byte
    22. //ersetzen(); //ersetzt str1 durch str2, speichert in 'result' & gibt die Anzahl der Texersetzungen aus
    23. return 0;
    24. }
    Alles anzeigen
  • Das wird so nicht funktionieren, da du bei fgetc immer nur ein Zeichen bekommst, dieses aber statt des Typs "char" den Typ "int" hat. D.h. aber nicht, dass deshalb gleich 4 Bytes gelsen werden.
    Als Alternative würde ich die Funktion "fgets" zum zeilenweise lesen der Datei einsetzen, und "strstr" zum suchen eines Strings.

    Quellcode

    1. int countstr(void){
    2. FILE *source=fopen("source.txt","rt");
    3. int counter=0;
    4. char sLine[2048];
    5. while(fgets (sLine, 2048, source)) {
    6. char* p = strstr (sLine, "str1");
    7. while (p != NULL) {
    8. ++counter;
    9. // Suche nach der aktuellen Fundstelle
    10. p = strstr (p + 4, "str1"); // 4 ist die Länge von "str1"
    11. }
    12. }
    13. printf("\n\n");
    14. printf("Anzahl der Vorkommen von 'str1': %d\n",counter);
    15. return 0;
    16. }
    Alles anzeigen



    hth