Dringende Hilfe gesucht!!!
-
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 zuweisenKa_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????
-
Lerne erstmal, den Code zu formatieren ...
-
und welche fehlermeldungen? also bitte, einfach nach hilfe schreien ohne sich die mühe zu machen etwas mehr an infos rauszurücken darf echt nicht unterstützt werden!!!
-
Dringend hilfe gesucht? - doch nicht wirklich - ist doch nur c
Wie meine Vorschreiber schon anmerkten - sauberes Schreiben und Formatieren -
da findet man Auffälligkeiten wesentlich einfacherHab da so einen Verdacht - nicht geprüft: Du verwendest die ( Leer- )Zeichen
vor und nach dem "*" ziemlich willkürlich - oder willst du das so wie du
das schreibst?
-
#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); }
-
Ich glaube, es hat noch keiner so richtig kapiert, welches Problem du jetzt hast. Eventuell:
fprintf(fOUT2,"%f %f %f \n",r,phi,theta);
durch das hier austauschen:
fscanf(fOUT2,"%f %f %f",&r,&phi,&theta);
Was mir noch aufgefallen ist, ist das "...%f \n". Was soll das da? Wenn du glaubst, dass dadurch kein Zeielnumbruch folgt, haste dich geschnitten. Wenn du die Zeielnumbrüche nicht miteinlesen möchtest, solltest du dir einen kleinen Lexer schreiben.
Mfg.
way
-
Tut mir leid, es ist das erste mal, dass ich in nem Forum nach hilfe frage, ich bin maschinenbaustudent und habe leider nur laienfähigkeiten was programmieren betrifft.
#include <stdio.h>
#include <math.h>int main (int argc, char * argv[]) // Hauptfunktion mit Kommandozeilenparameter, die Textdatei, in der die Daten stehen wird hier übergeben.
{
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) // hier wird verglichen, ob der Name der übergebenen Textdatei mit Daten.xyzk übereinstimmt, wenn ja dann wird die if funktion ausgeführt.
{
daten=fopen(argv[1],"r"); // öffnen der Datei um Daten einzulesenfOUT=fopen("Umrechnung.ku","w");// öffnen einer neuen Datei um umgerechnete Daten in diese zu schreiben
while (!feof(daten))
{
fgets(line,100,daten); //zeilenweise die Daten aus der Datei einlesensscanf(line,"%f,%f,%f",&xeing,&yeing,&zeing); //Daten aus dem tream einlesen und Variablen zuweisen
Ka_Ku(xeing,yeing,zeing,fOUT); //Übergabe der Variablen an die Funktion
}
fclose(daten);fprintf(fOUT,"Karthesisch in Kugelkoordinaten");
fclose(fOUT);
}
void Ka_Ku(float x,float y, float z,FILE*fOUT2)
{
float r,phi,theta;r=sqrt(x*x+y*y+z*z); //Umrechnen der Variablen
phi=atan(y/x);
theta=acos(z/r);fprintf(fOUT2,"%f %f %f \n",r,phi,theta);
//Umgerechnete Variablen in die neu angelegte Textdatei Umrechnung.ku schreiben
}
Die Fehlermeldung lautet:
File:f:\dd\vctools\crt_bld\self_x86\crt\src\feoferr.c
Line:44Expression: (stream!=NULL)
-
He? Ich versteh nicht was so schwer daran ist die C/C++ TAGS ZU BENUTZEN!. Glaubste hier zählt jetzt einer Zeilen? Wird wohl irgendein Lesefeher mit fstream sein.
-
Hab den letzten Quelltext mal code::blocks-formatiert:
Unter deinem Eingabefeld hier im Forum siehst du unter den Smilies
einige Schaltfelder - nimm für C das mit c/c++ - und dann:#include <stdio.h> #include <math.h> int main (int argc, char * argv[]) // Hauptfunktion mit Kommandozeilenparameter, die Textdatei, in der die Daten stehen wird hier übergeben. { 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) // hier wird verglichen, ob der Name der übergebenen Textdatei mit Daten.xyzk übereinstimmt, wenn ja dann wird die if funktion ausgeführt. { daten=fopen(argv[1],"r"); // öffnen der Datei um Daten einzulesen fOUT=fopen("Umrechnung.ku","w");// öffnen einer neuen Datei um umgerechnete Daten in diese zu schreiben while (!feof(daten)) { fgets(line,100,daten); //zeilenweise die Daten aus der Datei einlesen sscanf(line,"%f,%f,%f",&xeing,&yeing,&zeing); //Daten aus dem tream einlesen und Variablen zuweisen Ka_Ku(xeing,yeing,zeing,fOUT); //Übergabe der Variablen an die Funktion } fclose(daten); fprintf(fOUT,"Karthesisch in Kugelkoordinaten"); fclose(fOUT); } void Ka_Ku(float x,float y, float z,FILE*fOUT2) { float r,phi,theta; r=sqrt(x*x+y*y+z*z); //Umrechnen der Variablen phi=atan(y/x); theta=acos(z/r); fprintf(fOUT2,"%f %f %f \n",r,phi,theta); //Umgerechnete Variablen in die neu angelegte Textdatei Umrechnung.ku schreiben }
Und nach dem du deinen Quelltext hierhin kopiert hast nochmal auf c/c++
Hab jetzt nicht den VC - aber, wenn du dir den formatierten Quelltext
ansiehst - die Klammern sind nicht paarweise untereinanderDann rufst du in main die Funktion Ka_Ku auf ohne die zuvor zu
deklarierenWeis jetzt nicht wie dein VC zur Fehlermeldung kommt - mein Compiler
zeigt erstmal andereSo ausführlich da Weihnachten :xmas1:
-
.... gelöscht weil schrott...
-
Hau rein, da sind noch ein paar Macken in deinem Code.
Bei der Abfrage ob der Dateiname richtig ist ( Zeile 31 ) ?
Und noch mehr.
Zeig mal ein wenig Einsatz