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