PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit gcc



12-02-2001, 19:50
Unter Linux fertige ich folgende emacs-Datei an (2.c)


#include <stdio.h>
#include <string.h>

main() {
FILE *datei;
char file[3],zeichen;
gets(file);
printf("\nDatei: %s\n",file);
datei=fopen(file,"r");
zeichen=fgetc(datei);
printf("Erstes Zeichen: %s\n",zeichen);
fclose(datei);
}

Compilieren geht einwandfrei, aba sobald ich die daraus entstehende Datei ausfhre (fr file gebe ich "1.c" ein, und wenn ich das lesen des ersten Zeichens weglasse, l%6 sst sich die Datei auch problemlos %0-ffnen und schliessen) und 1.c eingegeben habe, bricht er mir ab, und erdreistet sich mir auszugeben: Speicherzugriffsfehler
Kann mir jemand helfen??? (ich weiss...das Prog. is unntz und newbiehaft (bin ja auch newbie) aba irgendwie komm ich da net weiter, ich benutze den gcc-compiler, der bei suse 7.0 prof. dabei is, k.a. welche Ver. das jetzt genau is...)
THX im Vorraus

------------------
Die Leute, die glauben, sie wüssten schon alles, wissen am wenigsten.

thommy
13-02-2001, 07:33
"1.c" sind drei Zeichen. Intern wird noch das Zeichenkettenendezeichen '\0' angehangen, sodass Du 4 Zeichen benötigst. Da "file" aber nur mit 3 Zeichen vereinbart wurde, knallt es...

Thomas

Tosk
13-02-2001, 08:09
null-terminated strings http://www.linuxforen.de/ubb/wink.gif

Tosk

13-02-2001, 11:29
Stimmt, ihr habt natrlich recht...Newbiefehler.
ABA: ich hab das prog jetzt ge%6 ndert, und die Ausgabe lautet jetzt (genauso wie vorher auch):
# ./2 (hab 2.c als "2" compiliert)
_____ (ich gebe 1.c ein)

Datei: 1.c
Speicherzugriffsfehler
#

Auch wenn ich die GETS-Funktion durch die
STRCPY(file,"1.c");
Funktion ersetze, kommt die gleiche Ausgabe.
HIIIIIILFEEEEE!!!!!
Danke trotzdem fr eure Bemhungen.

------------------
Die Leute, die glauben, sie wüssten schon alles, wissen am wenigsten.

13-02-2001, 14:02
Wie gesagt...Newbie http://www.linuxforen.de/ubb/biggrin.gif
es funkst jetzt, thx.
danke, dass ihr mir eure doch so wertvolle Zeit geopfert habt http://www.linuxforen.de/ubb/wink.gif

------------------
Die Leute, die glauben, sie wüssten schon alles, wissen am wenigsten.

thommy
14-02-2001, 00:07
Es knallt nun in der Ausgabe, da Du mit "%s" eine Zeichenkette ausgibst, aber "zeichen" nur ein einzelnes Zeichen enthält http://www.linuxforen.de/ubb/wink.gif

Thomas