C - Daten in Txt Datei verändern

.tails

New member
Hallo.
Erstmal worums geht:
Ich habe eine Funktion, die nach und nach alle Zeilen einer Txt Datei nach einem String durchsucht.
Jede Zeile wird dann in einer zweiten Datei zwischengespeichert.
Wenn der String gefunden wird, wird ein Wert in der Zeile verändert und auch in die zweite Datei geschrieben.
Danach übertrag ich dann alle Zeilen aus der zweiten wieder in die erste Datei.
Jetzt zum Problem.
Wenn besagter String nicht gefunden wird, soll er hinzugefügt werden.
Und das funktioniert nicht.
Hier dann mal die Funktion. Das mag unter Umständen nicht gut programmiert sein, aber darum gehts ja momentan auch nicht 8)

Code:
void hh_change(char *suchtext, long int amount){
    FILE* fp;
    FILE* fp2;
    char line[50];
    char *name;
    long int kg;
    int found=0;
    
    if(strncmp(suchtext,"",20)!=0){
        fp=fopen("./datei1.txt","r");
        fp2=fopen("./datei2.txt","w+");
            while(fgets(line, 50, fp)){
                name = strtok(line,",");
                kg = strtol(strtok(NULL,","),NULL,10);
                if(strncmp(name,suchtext,20)==0){
                    if(amount==0){kg = 0;}
                    else{kg += amount;}
                    found=1;
                }
                fprintf(fp2, "%s,%li\n", name, kg);
            }
            if(found==0) fprintf(fp2, "%s,%li\n", suchtext, amount);
        fclose(fp);
        fclose(fp2);

        fp=fopen("./datei1.txt","w+");
        fp2=fopen("./datei2.txt","r");
            while(fgets(line, 50, fp2)){
                name = strtok(line,",");
                kg = strtol(strtok(NULL,","),NULL,10);
                fprintf(fp, "%s,%li\n", name, kg);
            }
        fclose(fp);
        fclose(fp2);
    } 
}
mfg, tails

Edit:
Sehr interessant ist das genau dieser Code unter Windows zu funktionieren scheint oO"
Ich brauch ihn aber unter Linux =/
Unter Windows nehm ich Dev-Cpp und unter Linux gcc.
Soweit ich weiß ist Dev-Cpp ja gcc. daran kanns also nicht liegen...

Edit2:
Und wenn ich die abfrage raus mache funktioniert alles.
Es liegt also daran das er die found variable nicht richtig abfragt =/

Edit3:
Einen Tag hab ich hier jetzt dran gesessen. Nur um einen völlig seltsamen Fehler zu fixen.
Der Fehler war das ich das mit verschiedenen Programmen geschieben habe.
Das eine hat die Tabs nicht zu Leerzeichen umgewandelt. Kaum war das getan hat alles funktioniert...
Möchte ich abschliesend sagen: Danke für die die diesen Thread gelesen haben und vielleicht auch versucht haben mir zu helfen.
Und ich hoffe das ich nie wieder was in C programmieren muss xD"
 
Oben