Forum
Öffentliche Foren |
FORUM: Spiele & Computer THEMA: Datei in C einlesen | |
AUTOR | BEITRAG |
Earth
RANG Deckschrubber |
#1 - 18.12 16:21 Hi,in der Datei "testdatei.txt" ist in der ersten Zeile der Ausdruck "b=105" gespeichert. Jetzt möchte ich ein Programm schreiben dass mir die erste Zeile in einen String speichert und aus diesem die Zahl 105 rausliest: Hab mir das folgendermaßen gedacht: ----------------------------------------------------------------------- #include <stdio.h> int main(){ FILE *datei; char text[1000],c,*res; int laenge,ziffer,zahl=0,j; datei = fopen("testdatei.txt","r"); res=fgets(text, 1000 , datei); laenge = strlen(res); printf("%s",res); printf("%d",laenge); for(j=0;j=laenge;j++){ c = text[j+1]; if(c>='0' && c<='9'){ ziffer = c - '0'; zahl = zahl * 10 + ziffer; } } printf("%d",zahl); fclose(datei); return 0; } ----------------------------------------------------------------------- Wenn ich nun das Programm starte, reagiert der Copiler nimmer er macht gar nichts, also das heißt er hängt sich auf. Wo ist der Fehler im Programm? |
SirLant
RANG Lamer |
#2 - 18.12 18:10 for(j=0;j=laenge;j++){Du hast hier eine Zuweisung statt einer Bedingung, deswegen läuft die Schleife ewig, du meintest sicher: for(j=0;j<=laenge;j++){ |
Earth
RANG Deckschrubber |
#3 - 18.12 19:16 oja, schon wieder so ein billiger Fehler...Kann mir vll. jemand noch sagen wie man das obige Programm erweitert so dass er frägt welche Datei geöfnet werden soll und man dort seinen Dateinamen eingibt |
SirLant
RANG Lamer |
#4 - 18.12 22:23 Am einfachsten so:puts( "Bitte Dateinamen eingeben (max 255 Zeichen): " ); char path[ 255 ]; fgets( path, 255, stdin ); datei = fopen( path, "r" ); |
Earth
RANG Deckschrubber |
#5 - 19.12 14:32 Irgendwie stimmt da was nicht wenn ich in der nächsten Zeileres=fgets(text, 100 , datei); schreibe, ist in res der Nullzeiger gespeichert. Wenn ich allerdings anstatt path den echten Dateinamen hinschreibe funktioniert das Programm allerdings. |
SirLant
RANG Lamer |
#6 - 19.12 15:40 prüfst du nach dem open auch ob die datei geöffnet werden konnte?Du musst nach dem Einlesen mit fgets noch das Newline entfernen, das hab ich Gestern vergessen, also: puts( "Bitte Dateinamen eingeben (max 255 Zeichen): " ); char path[ 255 ]; fgets( path, 255, stdin ); int len = strlen( path ); if( path[ len - 1 ] == '\n' ) path[ len - 1 ] = '\0'; |
Earth
RANG Deckschrubber |
#7 - 19.12 16:05 ok Danke jetzt geht das auch so wie ich mir das vorgestellt habe :-) |