variable definieren
-
hallo,
kaum 5 minuten angemeldet schon die erste frage

ich würde gerne eine variable von ausserhalb definieren
dafür folgenden quellcode geschrieben:/* argument.c */
#include <stdio.h>
#include <stdlib.h>#include <iostream>
using namespace std;
int main(int argc, int **argv) {int i;
cout << "Bitte Zahl eingeben" << endl;
cin >> i;
int *a =("argv[%d] = %s ",&i, argv[i]);
cout << "Die Zahl betraegt:" << a << endl;
return 0;
}der kompiliert auch, aber wenn ich ihn ausführe und ich eine zahl eingebe, dann gibt er als lösung nur die adresse (?) raus:
Bitte Zahl eingeben
2
Die Zahl betraegt:0xbfb74a27wie kann ich ihn dazu bringen, dass er die zahl ausspuckt?
vielen dank,
gordon
-
das ist keine fehlerbeschreibung ..
-
grobian schrieb:
hallo,
int *a =("argv[%d] = %s ",&i, argv[i]);diese Zeile ist mir nicht ganz klar. Versuchst du, dort einen String zu erzeugen? Dann wäre ein int* falsch, stattdessen char*.
cout sollte allerdings auch ohne funktionieren, also in deinem Fallcout << i << " = " << argv[i];
oder so...

-
Wenn du einen Pointer an cout übergibst, gibt er dir natürlich auch nur den Pointer aus.
Mach aus
cout << "Die Zahl betraegt:" << a << endl;cout << "Die Zahl betraegt:" << *a << endl;
-
hallo,
danke erst mal für die antworten.
mit *a hatte ich auch scon probiert, dann gibts aber nur:
Bitte Zahl eingeben
3
Die Zahl betraegt:1279608915ob char* oder int* , klappt beides nicht!
grüsse,
gordon
-
int main(int argc, int **argv) { int i; cout << "Bitte Zahl eingeben" << endl; cin >> i; int *a =&i; cout << "Die Zahl betraegt:" << *a << endl; return 0; }
-
int *a =("argv[%d] = %s ",&i, argv[i]);Was genau willst du mit dieser Zeile überhaupt erreichen? Momentan initialisierst du 'a' mit dem Ergebnis des Ausdrucks (Komma-Operator - die Teile "argv[%d]=%s" und &i werden zwar ausgewertet, bewirken jedoch nichts, das Ergebnis ist argv[i]).
-
Okay, will ich mich mal reindenken:
Schon die Signatur von main kommt mir komisch:
int main(int argc, int** argcv)Im Zusammenhang mit der Aussage "ich würde gerne eine Variable von außerhalb definieren" komme ich zu dem Schluss, dass der OP der Auffassung ist, dass argv etwas ist, was er zu Verändern sucht. Vllt. irgendein Aufruf.
int *a =("argv[%d] = %s ",&i, argv[i]);Hier wird wohl versucht irgendwelche wirren Möglichkeiten einer Skriptsprache versucht anzuwenden:
1. Zunächst würde die Zeichenkette generiert zb. 'argv[3] = 3'
2. und dann versucht, dieses Ergebnis (vmtl. 3) an eine neue Variable zuzuweisen.@OP:
Das geht gott sei Dank nicht.
Die korrekte Signatur von main sieht folgendermaßen aus:
int main() { /* ... */ } // oder int main(int argc, char** args) { /* ... */ }Erstere kann man verwenden, wenn das Programm keine Kommandozeilenparameter verwendet. Die zweite wird verwendet um auf Kommandozeilenparameter des Programms zuzugreifen (genauer: nur abfragen).
argc (int) enthält die Zahl der Parameter
args (char**) ist ein zweidimensionales zeichen-array welches die einzelnen Parameter enthält.Mein Vorschlag: Grundlagenbuch kaufen, lesen, verstehen oder einfach mal ein Online-Tutorial lesen
Grüße...
Heiko
-
Das sieht mir so aus, als haette da jemand aus einem C-Tutorial fuer Kommandozeilenparameter Zeilen ausgeschnitten, die sprintfs oder printfs gegen ne Zuweisung ersetzt und das Ganze dann dem armen Compiler zum Frass vorgeworfen. Mal ganz ehrlich, wenn man selbst nicht versteht was man da tut, wie soll dann der Cmpiler das tun was man moechte?
-
hallo,
vielen dank erst mal für die antworten:
ich habe das problem anders lösen können.eine anmerkung:
gerade um zu verstehen was ich da mache, habe ich ja die frage ins forum gestellt.
grüsse,
gordon
-
Wie geil ist das denn?
int *a =("argv[%d] = %s ",&i, argv[i]);net übel ... auf sowas wäre ich nicht so ohne weiteres gekommen
Das der das schluckt ... net schlecht der Specht 
#include <iostream> int main(int argc, char* argv[]) { std::cout << "Zahl: " << std::flush; int i = 0; std::cin >> i; std::cout << "|Zahl|: " << static_cast<unsigned int>(int) << std::endl; }oder so ^^