typedef struct Symbol{
char varName[16];
} Symbol;
...............
Symbol *newSymbol = malloc(sizeof(Symbol));
const char space[2] = " ";
char *String = "Name Test";
//break off the first word from String and put it into name
char *name;
name = strtok(String,space);
//convert the char * to char[16]
char nameArray[16];
strcpy(nameArray,name);
//set newSymbol->varName to the newly created char[16]
newSymbol->varName = nameArray
Ich habe eine char *
namens String
. In meinem aktuellen Programm wird es aus einer Datei mit fgets
gelesen, ich nenne es nur "Name Test" für die Zwecke dieses Beispiels. Ich möchte das erste Wort der Zeichenfolge nehmen und es als varName
in einer Symbol
zuweisen. Was also passieren soll, ist newSymbol->varName
ist auf "Name" eingestellt. Weil strtok
eine char *
zurückgibt, aber ich brauche eine char[16]
für die Struktur, muss ich die char *
in eine char[16]
konvertieren.Strcpy von char * nach char [] Erstellen des falschen Formulars
Allerdings bekomme ich diesen Fehler:
"Error: incompatible types when assigning to type 'char[16]' from type 'char*'
newSymbol -> varName = nameArray;
So scheint es, wie strcpy eigentlich ist es nicht die char *
zu einem char[16]
konvertieren. Auch nachdem ich eine char[16]
deklariert und strcpy
gesagt habe, um den Inhalt der char *
darin zu setzen, habe ich noch eine char *
statt einer char[16]
. Ich muss es machen, ohne die Struktur zu ändern, also ist das keine Option hier.
Wie kann ich eine char *
in eine char[16]
konvertieren?
Hmmm 'char * String =" Name Test "; ... name = strtok (String, Leerzeichen); 'sieht zweifelhaft aus und versucht, ein Zeichenfolgenliteral zu ändern, denke ich. – chux
Sie haben recht, @chux, aber ich nehme an, dass dies ein Fehler ist, den der OP bei der Reduzierung seines ursprünglichen Codes auf das von ihm vorgestellte Beispiel eingeführt hat. –