char als parameter an eine Programmteil übergeben
-
hallo,
kann ich einen char an einen anderen Programmteil übergeben.
Ich habe das so geschrieben und es funktioniert aber nicht.#include <stdio.h> #include <stdlib.h> int umbenennen(char name[]) { newname[50]="neu"; return 0; } int main(int argc, char *argv[]) { char name[50]="alt"; umbenennen(name); printf("%s", name); return 0; }
-
du musst den inhalt von 'name' schon verändern
z.b. so:void umbenennen(char name[]) { strncpy (name, "neu", 50); }
-
Naja, mein eigentliches Problem sieht so aus.
int umbenennen(char *argv[], char *newname) { char oldname[50]; int rc; sprintf(oldname, "%s", argv[1]); sprintf(newname, "%s", argv[2]); if(rename(oldname, newname)==0) rc=0; else rc=1; return 0; } int main(int argc, char *argv[]) { char newname; umbenennen(argv, &newname); return 0; }
Ich weiß nicht, ob du verstehst, was da eigentlich rauskommen soll.
Also. In Main gebe ich ihm eine Variable an, die ich dann an "umbenennen" übergebe. In "umbenennen" soll "newname" mit dem Wert von argv geändert werden. Die Variable newname soll dann wieder an main zurückgegeben werden.
Verstanden was ich meine?
Geht das? Jaja, ich denke manchmal etwas kompliziert. Wäre auch mit einer einfacheren Lösung zufrieden.Danke schon mal im Voraus
-
Du solltest für newname auch Speicher allokieren
Wenn du aus deinem Unterprogramm newname zurückgeben lassen willst, musst du einen Zeiger auf char (char
als Rückgabewert angeben
und dann natürlich auch newname zurückgeben.
-
Ups, peinlich.
Aber es funktioniert leider immernoch nicht. Hier mein neuer Code + Fehlermeldungen.
#include <stdio.h> #include <stdlib.h> int umbenennen(char *argv[], char *newname[]) { char oldname[50]; //char newname[50]; int rc; sprintf(oldname, "%s", argv[1]); sprintf(newname, "%s", argv[2]); if(rename(oldname, newname)==0) rc=0; else rc=1; printf("%s\n", newname); return 0; } int main(int argc, char *argv[]) { char newname[50]; umbenennen(argv, &newname); printf("%s\n", newname); return 0; }
P.c: In function
umbenennen': P.c:19: warning: passing arg 1 of
sprintf' from incompatible pointer type
P.c:21: warning: passing arg 2 ofrename' from incompatible pointer type P.c: In function
main':
P.c:35: warning: passing arg 2 of `umbenennen' from incompatible pointer type
-
das newname-Array ist ein eindimensionales, also behandle es auch in deinem Funktionsaufruf und Funktionskopf so!
also so:
#include <stdio.h> #include <stdlib.h> int umbenennen(char *argv[], char *newname) { char oldname[50]; //char newname[50]; int rc; sprintf(oldname, "%s", argv[1]); sprintf(newname, "%s", argv[2]); if(rename(oldname, newname)==0) rc=0; else rc=1; printf("%s\n", newname); return 0; } int main(int argc, char *argv[]) { char newname[50]; umbenennen(argv, newname); printf("%s\n", newname); return 0; }
-
Und schon wieder hast du mir geholfen.
Ich danke dir sehr. Man was wird ich nur ohne solche Leute wie euch machen???
Wahrscheinlich nicht Programmieren.