kleiner Fehler

Post Reply
Message
Author
bap

kleiner Fehler

#1 Post by bap »

findet hier jemand bei long einen Fehler?

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])

{
FILE *quelldatei;
int c;
char datei[60];

switch(argc)
{
case 2:
printf("1 Argument angegeben
");

if((quelldatei=fopen(argv<font size="1">,"r")) == NULL){
printf("Konnte %s nicht oeffnen
",quelldatei);
} // if

else {
printf("Datei %s wurde geoeffnet
",quelldatei);
getchar();
} // else


fseek(quelldatei, 0L, SEEK_END);
long filepos = ftell(quelldatei);
while (filepos >= 0) {
fseek(quelldatei, filepos, SEEK_SET);
putc(getc(quelldatei), stdout);
filepos -= 1;
} // while

getchar();
break;

case 3:
printf("2 Argumente angegeben
");
printf("Das sind die 2 Argumente:%s %s
",argv<font size="1">,argv<font size="2">);
getchar();
break;

default: printf("Fehler!!! Kein Argument angegeben
");
getchar();
break;
}
}

Sulu

Re: kleiner Fehler

#2 Post by Sulu »

Hi bap.

long filepos = ftell(quelldatei);

So macht man das aber nicht.

Vor den ausführbaren Anweisungen zuerst definieren.
long filepos;


Dann im ausführbaren Teil
filepos = ftell(quelldatei);

Gruss
Sulu

Sulu

Re: kleiner Fehler

#3 Post by Sulu »

Sach mal.

Funktioniert das wirklich:

if((quelldatei=fopen(argv,"r")) == NULL){
printf("Konnte %s nicht oeffnen ",quelldatei);
} // if

Müsste meines Erachtens
if((quelldatei=fopen(argv<font size="2">,"r")) == NULL){
printf("Konnte %s nicht oeffnen",argv<font size="2">);
} // if
lauten.

1.) argv ist eine String-Array un die Argumente müssen mit einem Index angesprochen werden.
argv[0] ... Programmname
argv<font size="1"> ... Erstes Argument
....
2.) quelldatei ist ein FIlE-Pointer. Den gibt mans normalerweise nicht aus allenfalls als
printf("quelldatei %p
",quelldatei);

bap

Re: kleiner Fehler

#4 Post by bap »

ne geht auch nicht

hat das vieleicht was mit dem Wert von argv und argc zu tun?

Jochen

Re: kleiner Fehler

#5 Post by Jochen »

Kleiner Tipp am Rande: Das Board verschluckt eckige Klammern manchmal, da man mittels dieser und HTML-ähnlicher Codes seine Postings mit <b>Fett</b>-Schrift ([<!--no-->b<!--no-->]Fett[<!--no-->/b<!--no-->]) oder <i>kursiver</i> ([<!--no-->i<!--no-->]kursiver[<!--no-->/i<!--no-->]) Schrift schmücken kann. Auch <pre>prä-formatierter Text([<!--no-->pre<!--no-->]prä-formatierter Text[<!--no-->/pre<!--no-->])</pre> ist möglich und so Sachen, genauer nachzulesen unter <a href="http://www.pl-forum.de/cgi-bin/UltraBoa ... 0&Session=" target="_blank"><!--auto-->http://www.pl-forum.de/cgi-bin/UltraBoa ... <!--auto-->

Daher bitte beachten: Eckige Klammern in programm-Sourcen mittels "\<!--no-->" escapen, einzelne Backslashes (\<!--no-->) durch "\<!--no-->\<!--no-->" ersetzen!

(So, und jetzt aber erst mal die Vorschau nutzen. <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">)

Jochen

Sulu

Re: kleiner Fehler

#6 Post by Sulu »

Hi bap !

Also.

Folgender Programmaufruf:

hansi otto eva 1 3

bedeutet ein argc = 5.

Aber die Argumente sind so aufgebaut:
argv[<!--no-->0<!--no-->] ist "hansi"
argv[<!--no-->1<!--no-->] ist "otto" 1.) Argument
argv[<!--no-->2<!--no-->] ist "eva" 2.) Argument
argv[<!--no-->3<!--no-->] ist "1" 3.) Argument
argv[<!--no-->4<!--no-->] ist "3" 4.) Argument

! Das letzte Argument hat also die Nummer 4.

/* Alle Arguemtente ausgeben. */
for(i=0;i<argc;i++) {
printf("%s\<!--no-->n",argv[<!--no-->i<!--no-->]);
}

....................

Wir interesieren uns z.B. für das 2. Agument, das soll also ein Filename sein

/* Definition Filename */
char filename[256];

/* Jetzt wollen wir den Filename aus dem Commandlineargument entnehmen. */
strcpy(filename,argv[<!--no-->2<!--no-->]);


/* File öffnen */
if( fopen("filename","r")) == NULL) {
printf("So'n Pech aber auch! File %s konte nicht geöffnet werden\<!--no-->n",filename);
exit(1);
}


Bau mal dein Program sinngemäss um, dann sind wir schon mal weiter.

Gruss
SULU

PS: Die Backslash's bei den eckigen Klammern wieder wegnehmen wenn DU den Code aus dem Posting entnehmen solltest.

trinity
Posts: 821
Joined: 12. Oct 2001 10:04

Re: kleiner Fehler

#7 Post by trinity »

@Sulu
Dein File öffnen entspricht eigentlich ziemlich genau dem File öffnen von bap.

@bap
Ich fänbde es nicht schlecht, wenn du etwas genauer wärst. Die Aussage, findet hier jemand bei long einen Fehler,ohne anzugeben warum da z. B. ein Fehler sein soll, ist IMHO unter aller ...
Dazu gehört: Meckert der Compiler? Wenn ja welche Fehlermeldung gibt er aus. Gibt es Probleme bei der Ausführung deines Programms, wenn ja wie sieht die Fehlermeldung aus, und welche Parameter wurden übergeben.

Wenn du schon argv verwendest, wäre es auch nicht schlecht mit anzugeben, welches Argument du denn auswerten willst.
"Korrekt, Freundlich, Kostenfrei", wähle genau zwei. (Lutz Donnerhacke in dcsf)

bap

Re: kleiner Fehler

#8 Post by bap »

habs schon geschafft

gewitter
Posts: 1354
Joined: 09. Apr 2001 9:03

Re: kleiner Fehler

#9 Post by gewitter »

@bap:
von dieser aussage lernen wir nichts. danke.

Post Reply