char als parameter an eine Programmteil übergeben

Blondie05

Grünschnabel
hallo,

kann ich einen char an einen anderen Programmteil übergeben.
Ich habe das so geschrieben und es funktioniert aber nicht.

Code:
#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 kannst einen Pointer auf ein char-Array übergeben:

Code:
#include <stdio.h>

#define NAMELENGTH 50

void umbenennen(char * name)
{
  strncpy(name, "Neuer Name", NAMELENGTH-1);
}

int main(void)
{
  char name[NAMELENGTH] = "Hans-Peter";
  umbenennen(name);
  printf("%s",name);
  return 0;
}
 
Naja, mein eigentliches Problem sieht so aus.

Code:
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
 
Code:
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 rc;

}


int main(int argc, char *argv[])
{
        char newname[50];

        umbenennen(argv, &newname);

        return 0;
}

So ?
 
Für was hast du dann die Variable rc?

Da du einen Pointer auf einen String übergibst, schreibt die Funktion an die Stelle an der der String auf dem Arbeitsspeicher liegt. Du musst den String also nicht zurückgeben, da er bereits in der Funktion geschrieben wird.
 
Achso, na dann ist das ja gut!

Naja, ich muss am Ende noch nen Return-Code ausgeben. Der RC hat in diesem Zusammenhang keinen Sinn, das kommt später noch. Danke
 
Ihr verwirrt mich! :)

Code:
#include <stdio.h>
#include <string.h>

void umbenennen(char *name, char *argv[])
{
  strcpy(name, argv[1]);
}

int main(int argc, char *argv[])
{
  char name[50]="---leer---";

  umbenennen(name, argv);
  printf("%s",name);

  return 0;
}
geht auch einfach und super...
 
Zurück