Clanintern Clanintern Clanintern

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 Zeile

res=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 :-)