Dallas41 Geschrieben 23. Dezember 2008 Geschrieben 23. Dezember 2008 Hallo ich habe folgendes Programm geschrieben (mit Visual Studio 2008) um aus einer Textdatei Koordinaten einzulesen und diese umgerechnet in eine neue Textdatei zu schreiben: #include <stdio.h> #include <math.h> void Ka_Ku(float x,float y, float z,FILE*fOUT2) { float r,phi,theta; r=sqrt(x*x+y*y+z*z); phi=atan(y/x); theta=acos(z/r); fprintf(fOUT2,"%f %f %f \n",r,phi,theta); //Daten in Datei schreiben } int main (int argc, char * argv[]) // Hauptfunktion mit Kommandozeilenparameter { float xeing,yeing,zeing; float roheing,alphaeing,hoeheeing; float reing,phieing,thetaeing; int i=5; FILE * daten; FILE * fOUT; int line[100]; if (argc<2) {printf("Falsche Eingabe");}; if (strcmp(argv[1],"Daten.xyzk")!=0) { daten=fopen(argv[1],"r"); fOUT=fopen("Umrechnung.ku","w"); while (!feof(daten)) { fgets(line,100,daten); sscanf(line,"%f,%f,%f",&xeing,&yeing,&zeing); //Daten einlesen und Variablen zuweisen Ka_Ku(xeing,yeing,zeing,fOUT); } fclose(daten); fprintf(fOUT,"Karthesisch in Kugelkoordinaten"); fclose(fOUT); } ... In der Datei Daten.xyzk stehen die einzulesenden Daten. Wenn ich das Programm Debugge und vorher einstelle, dass die Datei Daten.xyzk als Befehlsargument übergeben wird, funktioniert das Programm. Wenn ich es jetzt aber richtig über cmd ausführen will krieg ich Fehlermeldungen. Kann mir irgendjemand helfen???? Beitrag bearbeiten/löschen Zitieren
dr.dimitri Geschrieben 23. Dezember 2008 Geschrieben 23. Dezember 2008 Wenn ich es jetzt aber richtig über cmd ausführen will krieg ich Fehlermeldungen. Also diese Beschreibung sagt dann ja wohl alles oder? Mein letztes C Programm ist schon ein bissl her, aber wenns im Debug Modus läuft und ansonsten nicht, dann war das meinsten ein Hinweis auf einen Arrayüberlauf o.ä. Im Debugmodus werden noch diverse Informationen mit ins Programm kompiliert, der Platzbedarf steigt und dort fallen dann solche Fehler nicht auf, weil der überschriebene Speicher zufällig leer war. Was mir auffällt: Du verwendest gets mit einem int array. Um Strings einzulesen sollte man auch ein char[] verwenden. Dim Zitieren
AndiE Geschrieben 23. Dezember 2008 Geschrieben 23. Dezember 2008 Du übergibtst eine Erweiterung mit vier Zeichen. (xyzk) Das mag nicht gut gehen Zitieren
Klotzkopp Geschrieben 23. Dezember 2008 Geschrieben 23. Dezember 2008 Wenn ich das Programm Debugge und vorher einstelle, dass die Datei Daten.xyzk als Befehlsargument übergeben wird, funktioniert das Programm.Das möchte ich anzweifeln. Denn genau in diesem Fall tut das Programm eigentlich gar nichts, insbesondere wird Ka_Ku nicht aufgerufen. if (strcmp(argv[1],"Daten.xyzk")!=0)Wenn du das Programm mit Daten.xyzk aufrufst, ist diese Bedingung nicht wahr, damit wird der gesamte Block übersprungen. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.