2016-08-20 5 views
-5

Ich versuche, die Zeichenfolge auf Array [0] zu Personen [0] .name zu speichern, aber ich bekomme diesen Fehler: Zuordnung zu Ausdruck mit Array-Typ. Was soll ich machen?Wie speichere ich eine Zeichenfolge an ein Struktur-Array-Mitglied?

#include <stdio.h> 
#include <stdlib.h> 
struct person{ 
    char name[25]; 
}; 
int main(){ 
    struct person persons[10]; 
    int i=0; 
    int array[10]; 
    char str[] ="This is a test"; 
    char * pch; 

    printf ("Splitting string \"%s\" into tokens:\n",str); 
    pch = strtok (str," "); 
    while (pch != NULL) 
    { 
     array[i]=pch; 
     pch = strtok (NULL, " "); 
     i++; 
    } 
    //persons[0].name=array[0]; //error: assignment to expression with array type 
    printf("persons.name: %s\n", persons[0].name); 
    printf("array[0] = %s", array[0]); 
} 
+1

'array [i] = pch;' ist ein Fehler, die Aufmerksamkeit auf den Ausgang Compiler zahlen –

+1

Es gibt viele Compiler-Warnungen , wie die Tatsache, dass 'strtok' nicht definiert ist (weil du' 'nicht eingeschlossen hast) und dass' array [i] = pch' wahrscheinlich falsch ist (und ich bin mir nicht einmal sicher, warum das nicht verursacht ein Kompilierfehler für MinGW). Ich glaube nicht, dass du verstehst, was Arrays sind, also könnte es eine bessere Idee sein, [einen guten Anfängerleitfaden auf C zu erhalten] (// stackoverflow.com/a/562377/824425). –

+0

Es ist nichts falsch mit der Whileloop. Array [10] enthält was enthalten soll. – ayo

Antwort

-2

versuchen strcpy statt den Wert mit einem = zuweisen:

strcpy(persons[0].name, array[0]) 
+0

Der Code kann ausgeführt werden, aber Personen [0] .name scheint leer zu sein. strcpy (& array [0], Personen [0] .name); – ayo

+0

hat es tatsächlich funktioniert. Ich musste nur die Syntax bearbeiten. strcpy (Personen [0] .name, Array [0]); – ayo

+1

Da 'array [0]' ein 'int' ist, kann der Ausdruck in der Antwort' strcpy (persons [0] .name, array [0]) 'nicht stimmen. Die Funktion benötigt zwei 'char *' Argumente. –

Verwandte Themen