integer to char*
-
Du weißt nicht was du willst, du weißt nicht was du machst.
Bevor du deine nächsten unkoordinierten Fragen stellst ohne die zuvor gegebenen Antworten zu achten, denke mal nach.
-
beginnerrfrage schrieb:
Ich muss ein ein char Array von 8 char-Pointern definieren und eine von diese pointern müssen ein integer zeigen.
Ist das überhaupt nicht möglich?
Wenn du die genaue Anforderung mal in richtigem Deutsch formulierst, kann man das vielleicht beantworten.
-
Und welche Version von atoi verwendest du?
Oder hast du geraten wie der Aufruf ist?
-
Jetzt versuche ich es noch mal.
Mien Ziel ist diese funktion aufzurufen: int funktionsname(char *argv[]);
Mit dem follgenden Kode kann ich es erfolgreich kompilieren:
#include <stdio.h> #include <stdlib.h> int main( int argc, char *argv[] ){ argv=(char **)malloc(3 * sizeof(char *)); argv[0] = "-gridfile"; argv[1] = "ocean1.grd"; argv[2] = NULL; funktionsname(char *argv[]); }
Aber dieser follgende Kode ist nicht erfollgreich kompilierbar:
#include <stdio.h> #include <stdlib.h> int main( ){ argv*[3]; // Wie soll ich definieren? argv=(char **)malloc(3 * sizeof(char *)); argv[0] = "-gridfile"; argv[1] = "ocean1.grd"; argv[2] = NULL; funktionsname(char *argv[]); }
Könnt ihr bitte das zweige Program corregieren.
-
beginnerrfrage schrieb:
Ich muss ein ein char Array von 8 char-Pointern definieren und eine von diese pointern müssen ein integer zeigen.
Ist das überhaupt nicht möglich?
Es hat mit atoi auch nicht funktioniert:
int count; char *arg[8]; arg[0] = atoi(count, arg[1], 10);
Vielleicht geht das mit malloc oder?
1. Der erste Fehler ist, dass count gar nicht initialisiert ist und du eine nicht initalisierte Variable der Funktion atoi übergibst.
2. Übergibst du der Funktion atoi vollkommen willkürlich Parameter.
3. Ist atoi die falsche Funktion (konvertiert einen String in einen int).
4. Die erwähnte Funktion itoa ist nicht im Standard.
5. Verwende sprintf oder snprintf.
http://pubs.opengroup.org/onlinepubs/9699919799/L. G.
Steffo
-
Sorry so sieht die funktionsaufruf:
funktionsname(argv);
-
Der Fehler ist : incompatible types when assigning to type char*[3] from type char **.
-
#include <stdio.h> #include <stdlib.h> int main( ){ char *argv[] = { "-gridfile", "ocean1.grd", NULL }; funktionsname(char *argv[]); return 0; }
-
Der Funktionsaufruf ist natürlich Quatsch.
int main( ){ char *argv[] = { "-gridfile", "ocean1.grd", NULL }; funktionsname(argv); // geändert return 0; }
-
DirkB schrieb:
char *argv[] = { "-gridfile", "ocean1.grd", NULL }; funktionsname(argv);
FTFY
edit: Da hast du es selbst schneller gemerkt als ich antworten konnte.
-
Nochmal zur eigentlichen Frage
beginnerrfrage schrieb:
argv*[3]; // Wie soll ich definieren?
Es steht doch schon alles in deinem 1. Beispiel. Allerdings fehlt da die Arraylänge.
char *argv[3];
-
Vielen Dank @Dirk
Follgende Kode ist erfollgreich audführbar.
#include <stdio.h> #include <stdlib.h> int main( ){ argv*[3]; argv[0] = "-gridfile"; argv[1] = "ocean1.grd"; argv[2] = NULL; funktionsname(argv); }
Ich will eigentlich nicht dass arv[2] auf NULL zeigt. Es muss eine int-variable "count" zeigen.
Follgende Vorschläge sind falsch:
int count=1; arv[2]=count;
int count=1; itoa(count, argv[2], 10)
int count=1; char a = (char) count; arv[2]= a;
Kann jemand bitte mir helfen??????
-
Sorry wegen syntaxfehlern
-
Die Anforderung macht keinen Sinn. Ein char* kann nicht auf einen Integer zeigen (Ok, technisch gesehen schon, aber was man damit machen kann, nützt herzlich wenig). Und was soll das überhaupt werden? Wenn ich mal von den Namen her schließen darf, dass der Wert auf den gezeigt werden soll die Anzahl der Elemente angibt, wie soll die Funktion dann wissen, an welcher dieser Wert steht, wenn sie die Anzahl der Elemente noch nicht kennt? Wer hat sich den Mist ausgedacht? Bist du sicher, dass du die Anforderungen richtig verstanden hast?
-
beginnerrfrage schrieb:
Follgende Kode ist erfollgreich audführbar.
Den falschen Code der vorher nicht funktionierte
Ein NULL-Zeiger am Ende eines Pointerarrays ist in C die übliche Art und Weise das Ende des Arrays zu kennzeichnen.
Du kannst doch auch
argv[2] = "1";
schreiben.
Wenn count variable sein soll:
char s_count[20]; // hier erhälst du den Platz für den String int count = 1; // oder anderer Wert sprintf(s_count,"%d",count); // "umwandeln" von count in einen String argv[2] = s_count; // argv[2] zeigt jetzt auf s_count
in funktionsname() musst du dann
atoi()
nehmen um an den Zahlenwert zu kommen.Damit das Ende dann auch markiert ist, mach auch
char *argv[4]; argv[3] = NULL;
-
Danke DirkB
Du bist echt hammer. Jetzt hat es endlich funktioniert.