Mein Problem wurde schon an anderer Stelle andiskutiert. Ich wurde
jedoch gebeten, für einen solchen Fall einen neuen Thread aufzumachen:
Ich habe ein ganz ungewöhnliches Problem:
1 | char pfad[1024];
|
2 | char datei[1024];
|
3 | FILE* stream;
|
4 |
|
5 | fgets(pfad,sizeof(pfad),stdin); // Pfad eingeben: pfad=="C:\\meinPfad"
|
6 | fflush(stdin);
|
7 | fgets(datei,sizeof(datei),stdin); // Dateinamen eingeben: datei=="text.txt"
|
8 | fflush(stdin);
|
9 |
|
10 | strcat(pfad,datei);
|
11 | stream=fopen(pfad,"r");
|
Diese letzte Zeile wird nicht ausgeführt, da schon davor bei strcat ein
falscher String entsteht.
Mein Debugger (GNU GCC Compiler) sagt, dass pfad nach strcat so
aussieht:pfad=="C:\\meinPfad\ntext.txt\n"d.h. dass er den ersten
Nullterminator nicht überschrieben hat.
Ok, ich merke gerade, dass man nach "meinPfad" auch noch "\\" einfügen
müsste. Aber trotzdem hab ich noch das andere Problem.
Es hat auch schon jemand das Folgende geantwortet:
>Zu deinem Problem:
>fgets liest die ganze eingegebene Zeile, INCLUSIVE dem "Enter" am
>Zeilenende.
Aber ich sehe im Debugger, dass pfad den Wert "C:\\meinPfad\0......."
hat. Die Punkte (........) stehen hier für irgendwas im Speicher.
Erkennt strcat nun nicht das erste Nullbyte?