textdatei erstellen mit c



  • also das mein quelltext bis jetzt

    mein prob ist wie bekomme ich es hin das er nur dasabspeichert was ich auch gesucht habe. er gibt mir jetzt alles aus aber as will ich ja nicht

    schonmal danke für die hilfe

    void neue_Funktion()

    {
    FILE *fp,*datei;
    int i;
    char text[255];
    char suchwort[2][20]={"benni","hallo"};
    int AnzahlSuchwoerter=2;
    char* ptr;

    fp = fopen ("d:\\test.cfg","rt");
    if (fp==NULL)
    {
    printf("Fehlen von diso_b_text.ini\r\n");
    }
    else
    {

    while ( NULL!=fgets(text,255, fp))
    {

    for (i=0; i<=AnzahlSuchwoerter; i++)
    {
    ptr = strstr (text,suchwort[i]);
    if ( ptr != NULL )
    {
    printf("%s\r\n",text);

    }
    }
    }
    fgets(text,255, fp);
    datei = fopen ("d:\\kopie.txt","a");
    fputs (text,datei);
    fclose (datei);
    }
    }



  • while ( NULL!=fgets(text,255, fp)) 
    { 
        for (i=0; i<=AnzahlSuchwoerter; i++) 
        { 
            ptr = strstr (text,suchwort[i]); 
            if ( ptr != NULL ) 
            { 
                printf("%s\r\n",text); 
            } 
        } 
    } 
    fgets(text,255, fp); 
    datei = fopen ("d:\\kopie.txt","a"); 
    fputs (text,datei); 
    fclose (datei); 
    }
    

    Du durchsuchst die Datei und immer wenn ein Suchwort vorkommt, gibst du die ganze Zeile aus (printf(...)).
    Nach der while-Schleife schreibst du dann die letzte Zeile in die Datei.

    Ich würd sagen, deine Logik stimmt da noch nicht.



  • ne eignetlich net die ganze textdatei die ich vorher eingelesen habe wird wieder in die andere datei geschireben und es soll ja nur die gesuchten eingelesen werden



  • Hier liegt schon ein Fehler:

    char suchwort[2][20]={"benni","hallo"}; 
    int AnzahlSuchwoerter=2; 
    ...
    for (i=0; i<=AnzahlSuchwoerter; i++)
    

    Du greifst auf suchwort[2] zu obwohl nur von ...[0] bis ...[1] reserviert ist. Dadurch gibst du zuviel aus !



  • Warum packst du das in die Datei schreiben nicht in die if-Verzweigung (if ( ptr != NULL{...} )) ?



  • ja bin blutiger anfänger was mit c zutun hat



  • uinmd wie soll das dan aussehn?



  • ok habs gelöst thx anyways



  • FILE *fp,*datei; 
    int i; 
    char text[255]; 
    char suchwort[2][20]={"benni","hallo"}; 
    int AnzahlSuchwoerter=1; 
    char* ptr; 
    fp = fopen ("d:\\test.cfg","rt");
    if (fp==NULL) 
    { 
        printf("Fehlen von diso_b_text.ini\r\n"); 
    } 
    else 
    { 
        datei = fopen ("d:\\kopie.txt","w");  
        while ( NULL!=fgets(text,255, fp)) 
        { 
            for (i=0; i<=AnzahlSuchwoerter; i++) 
            { 
                ptr = strstr (text,suchwort[i]); 
                if ( ptr != NULL ) 
                { 
                    printf("%s\r\n",text);
                    fputs (text,datei); 
                } 
            } 
        } 
        fclose(fp);
        fclose (datei);
    }
    


  • thx


Anmelden zum Antworten