Kleines Problem



  • Versuch doch mal das Problem einzugrenzen. Setze mal kpfad auf "data/Quiz.txt" und probier mal ob fopen dann funktioniert.



  • nun ja, hier mal die funktion addchar()...

    void addchar(char dest[], char add[]){
    
    	int idx;
    	int leng_add=0;
    	int i=0;
    
    	for(idx=0; dest[idx+1]!='\0'; idx++);
    	for(leng_add=0; add[leng_add]!='\0'; leng_add++);
    
    	idx++;
    
    	for(i=0; i<leng_add; i++, idx++){
    		dest[idx]=add[i];
    	}
    
    	dest[idx]='\0';
    
    }
    

    erhöhre ich idx vor

    dest[idx]='\0';

    so steht in kpfad ein zeichen zu viel drinnen, sprich das '\0' wurde richtig
    gesetzt. bei der ausgabe erfolgt ebenfalls die korrekte ausgabe.

    greeze
    ITEDVO



  • itedvo schrieb:

    nun ja, hier mal die funktion addchar()...

    Macht die was anderes als strcat? Falls nicht, schafft man sich so nur Fehlerquellen.



  • in errno steht 22 drinnen, ich scha grad mal was das heißt =b



  • mit strcat() ergibt sich der gleiche fehler... von dem her hab ichs eh richtig
    ausprogrammiert...



  • In pfad steht wahrscheinlich wie schon vermutet ein abschließendes '\n', welches man entfernen sollte.

    ReadPfad(pfad, x, y);
    if( strchr(pfad,'\n') ) *strchr(pfad,'\n')=0;
    


  • Das ist auch nur ein grundsätzlicher Hinweis. Es gibt keinen Grund, eine bereits vorhandene Funktionalität neu zu schreiben, richtiger kann man es nicht machen, falscher aber schon.
    Wenn:

    itedvo schrieb:

    //dat=fopen("data/Quiz.txt", "r"); //würde funktionieren
    

    Dann kann:

    itedvo schrieb:

    kpfad ist identisch zu "data/Quiz.txt"

    doch ganz offensichtlich nicht stimmen.
    Probier doch mal:

    strcpy(kpfad, "data/Quiz.txt");
        dat=fopen(kpfad,"r");
    


  • Bei deiner Kontrollausgabe kannst du schlecht erkennen, ob irgendwelche nichtdruckbare Zeichen enthalten sind. Besser ist, du klammerst den Text.

    printf("<%s>", kpfad);    // <data/Quiz.txt>
    // oder
        printf("\"%s\"", kpfad);  // "data/Quiz.txt"
    


  • µngbd schrieb:

    Was steht nach Zeile 22 in errno?

    Bei mir ist das EINVAL. Vielleicht ist das bei dir auch so.



  • die lösung von wutz hat funktioniert bzw. ich hab ja zeichenweise eingelesen
    und das '\0' erst nach dem Enter gemacht. ich habs jetzt so gelöst:

    pfad[i-1]='\0';
    

    danke, so ein kleiner Fehler und solch eine Zeit einbusung, gibts ja nich...
    aber ihr wart wieder mal super =b


Anmelden zum Antworten