Parameter übergabe an programm
-
Hallo,
ich will an das programm richardsdd.cc zwei parameter übergeben. hab schon danach gegoogelt und auch was dazu gefunden aber irgendwie funzt es nicht
int main (int argc, char *argv[]) try
{
#ifndef SATURATION
std::cout << "Computing WITHOUT saturation!" << std::endl;
#endiftypedef BlockVector<FieldVector<double, 1> > VectorType;
typedef BCRSMatrix<FieldMatrix<double,1,1> > MatrixType;// Set gravity direction
FieldVector<double, dim> gravityDir(0);
gravityDir[1] = 1;
//veränderungen von jschreib
char r1;
char r2;
argc=3;
argv[0]="/home/cocktail/jschreib/GAIA/richards\./richardsdd";
argv[1]=r1;
argv[2]=r2;
// ende veränderungen jschreib
// parse data file
ConfigParser parameterSet;
parameterSet.parseFile("richardsdd.parset");ich bekomme dann immer folgende fehlermeldung beim compilieren:
richardsdd.cc: In function ‘int main(int, char**)’:
richardsdd.cc:100: error: unknown escape sequence '\.'
richardsdd.cc:101: error: invalid conversion from ‘char’ to ‘char*’
richardsdd.cc:102: error: invalid conversion from ‘char’ to ‘char*’
make: *** [richardsdd.o] Fehler 1mfg
jschreib
-
int main (int argc, char *argv[]) tryWas soll denn das "try" da?
char r1; char r2; argc=3; argv[0]="/home/cocktail/jschreib/GAIA/richards\./richardsdd"; argv[1]=r1; argv[2]=r2;Das macht doch gar keinen Sinn. Du willst die dem Programm übergebenen Argumente nutzen, veränderst diese aber.
Kennst Du dich denn wenigsten in den Grundlagen für C++ etwas aus oder hast Du gar keine Ahnung?
Beschreib auf jeden Fall noch mal genauer, was Du eigentlich machen willst, bzw. wozu die Argumente genutzt werden sollen.
-
1. Bitte die Code-Tags für C++ benutzen, sonst wird dein Quelltext einfach vollkommen unleserlich.
2. Irgendwie werde ich aus deinem Code nicht schlau und verstehe nicht genau, was du willst und was du dafür machst. Etwas ausführlichere Informationen wären schon nicht schlecht.
3. Die Fehlermeldungen alleine bringen nicht so viel, wenn man nicht weiß, welchen Zeilen sie in deinem Code entsprechen.
4. Wenn du deinem Programm in der Kommandozeile Parameter übergeben willst, die dann ja in argv gespeichert werden, dann ist es wenig sinnvoll, wenn du diese innerhalb deines Programms wieder überschreibst. Das hier
argc=3; argv[0]="/home/cocktail/jschreib/GAIA/richards\./richardsdd"; argv[1]=r1; argv[2]=r2;meine ich.
-
ersteinmal vielen dank für die schnellen antworten.
ich will den programm zwei parameter übergeben (sollen doubles sein) und diese dann im programm weiternutzen.
int main (int argc, char *argv[]) try
{
double r1;
double r2;
argc=3;
argv[0]="/home/cocktail/jschreib/GAIA/richards\./richardsdd";
r1=argv[1];
r2=argv[2];
-
jschreib schrieb:
ersteinmal vielen dank für die schnellen antworten.
Die scheinst du aber nicht gerade gelesen zu haben...

MiP schrieb:
int main (int argc, char *argv[]) tryWas soll denn das "try" da?
Berufspenner schrieb:
1. Bitte die Code-Tags für C++ benutzen, sonst wird dein Quelltext einfach vollkommen unleserlich.
Berufspenner schrieb:
4. Wenn du deinem Programm in der Kommandozeile Parameter übergeben willst, die dann ja in argv gespeichert werden, dann ist es wenig sinnvoll, wenn du diese innerhalb deines Programms wieder überschreibst.
@ jschreib: Wie wäre es, wenn du diese Ratschläge beachten würdest?
Wie du vielleicht gemerkt hast, ist
argvvom Typchar**und demnach nicht kompatibel mitdouble, folglich geht auch die Zuweisung nicht.
Warum gibst du die Double-Werte nicht während des Programms ein oder liest sie aus einer Datei?
-
@ berufspenner
"was soll das try da" keine anhnung der code stammt nicht von mir, ich soll da nur die sache mit der parameterübergabe einbauen.@ nexus
"4. Wenn du deinem Programm in der Kommandozeile Parameter übergeben willst, die dann ja in argv gespeichert werden, dann ist es wenig sinnvoll, wenn du diese innerhalb deines Programms wieder überschreibst."char* r1;
char* r2;
argc=3;
argv[0]="/home/cocktail/jschreib/GAIA/richards\./richardsdd";
r1=argv[1];
r2=argv[2];dieser fehler wurde doch schon vorhin korrigiert!
1. Bitte die Code-Tags für C++ benutzen, sonst wird dein Quelltext einfach vollkommen unleserlich.
es sind doch nur ein paar zeilen code

-
jschreib schrieb:
1. Bitte die Code-Tags für C++ benutzen, sonst wird dein Quelltext einfach vollkommen unleserlich.
es sind doch nur ein paar zeilen code

Ein paar Zeilen schwerer leserlicher Code den sich keiner antun wird wenn du dich sogar absichtlich weigerst die Code-Tags zu verwenden. Du bist derjenige der hier Hilfe sucht, daher solltest du dich vielleicht auch an die Konventionen des Forums halten...
Siehe auch hier: http://www.c-plusplus.net/forum/viewtopic-var-t-is-200753.html
-
jschreib schrieb:
@ berufspenner
"was soll das try da" keine anhnung der code stammt nicht von mir, ich soll da nur die sache mit der parameterübergabe einbauen.Spricht nicht gerade für dich, wenn du diesen Fehler nicht erkennst und etwas mit den Argumenten anstellen willst.
jschreib schrieb:
dieser fehler wurde doch schon vorhin korrigiert!
So? Zumindest zweimal weist du den Argumenten etwas zu.
Und wenn du dich wenigstens ein bisschen mit den Grundlagen befassen würdest, wüsstest du auch, dass man zwei Variablen vom Typ
char*nicht kopiert, indem man eine Zuweisung schreibt.jschreib schrieb:
1. Bitte die Code-Tags für C++ benutzen, sonst wird dein Quelltext einfach vollkommen unleserlich.
es sind doch nur ein paar zeilen code

Gute Einstellung, die du hier mitbringst. Dann kommt noch dazu, dass unsere Ratschläge ignoriert werden. So langsam frag ich mich ernsthaft, was hier meine Hilfe bringt...

-
MiP schrieb:
Was soll denn das "try" da?
try hinter einer Funktion überwacht den ganzen Funktionsblock. Nur fehlen hier die catch's.
Bsp.:
void function() try { ... } catch(...) { ... }
-
schon klar, aber aus meiner sicht macht das in dem fall relativ wenig Sinn.
Erstmal sind keine komplexen Befehle im Code, die irgendwie "unvorhersehbare" Dinge tun könnten und zweitens bringt das aus meiner Sicht bei mehreren Zeilen Code keinen Vorteil da man ja im Falle eines Fehlers nicht genau weiß wo der Fehler lag, und somit im catch block auch nichts spezifisches bzgl. des Fehlers tun kann.
-
It0101 schrieb:
schon klar, aber aus meiner sicht macht das in dem fall relativ wenig Sinn.
Ich bezog mich hier auch auf keinen Fall.
Die Möglichkeit try so hinter eine Funktion zu setzen war anscheinend unbekannt und ich habe nur gezeigt das dies doch möglich ist.
Den Nutzen dieser Konstruktion kannst du hier nachlesen: http://c-plusplus.net/forum/viewtopic-var-t-is-218564.html
-
@admin
thread kann geschlossen werden. problem gelöst.@pumu offline
Kritik zur Kenntniss genommen, werde es nächstes mal besser machen.
@Nexus
du scheinst ziemlich viel frust zu haben. ich empfehle dir yoga.
-
@jschreib
@Nexus
du scheinst ziemlich viel frust zu haben. ich empfehle dir yoga.Nö - er hat dir einfach nur gesagt, dass du die cpp-tags benutzen sollst - is ja echt kein problem - aber wenn dir selbst das zu viel ist...
Und da du die Vorschläge so und so alle ignoriert hast, hätte dir jz wahrscheinlich eh keiner mehr geholfen...