Veröffentlicht 23. Dezember 200816 j 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
23. Dezember 200816 j 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
23. Dezember 200816 j Du übergibtst eine Erweiterung mit vier Zeichen. (xyzk) Das mag nicht gut gehen
23. Dezember 200816 j 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.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.