Ich versuche, Zeichenfolgen aus einem Feld in einer Struktur in eine andere Struktur (einen Knoten) zu kopieren, so dass ich schließlich eine Hashtabelle erstellen kann. Ich habe jedoch Probleme beim Kopieren der eigentlichen Zeichenfolge. Ich habe eine for-Schleife erstellt, um über die Strings im Source-Stuct zu iterieren, und ich weiß, dass die Iteration gut funktioniert, denn wenn ich die Source-Strings (data [i] .c_name) drucke, werden sie gut ausgedruckt. Unglücklicherweise scheint es, wenn ich versuche, das Ziel (class_id) zu drucken, leer zu sein (und daher tut meine Hash-Funktion natürlich nicht viel). Irgendwelche Einblicke in das mögliche Problem würden hier sehr geschätzt werden. Bitte lassen Sie mich wissen, wenn ich nicht genügend Kontext gegeben habe.C - Probleme beim Kopieren der Zeichenfolge von einer Struktur in einen Knoten
#define LENGTH 30
#define MAX_OBS 80000
typedef struct
{
char c_name[LENGTH];
char s_name[LENGTH];
double value[MAX_OBS];
}
sample;
typedef struct node
{
char class_id[LENGTH];
struct node *next;
}
node;
{
char class_id[LENGTH];
for (int i = 0; i < total_columns; i++)
{
// malloc a new node pointer for each new class label
node *new_node = malloc(sizeof(node));
// check that there was sufficient memory
if (new_node == NULL)
{
return 6;
}
// copy c_name into node -- failing - class_id is empty
strcpy(new_node->class_id, data[i].c_name);
printf("%s\n", class_id);
}
}
Ah fantastisch! Danke Gilbert! Ich bin ein bisschen verwirrt, obwohl - der new_node nur auf die class_id zeigt, warum also nicht die class_id drucken würde? Außerdem - ich kann definitiv die Wichtigkeit schätzen, dafür zu sorgen, dass nur die LÄNGE erlaubt wird kopiert wird, aber da beide Felder durch die gleiche Länge definiert sind, warum sollte es nicht sicher sein, das wegzulassen? Danke nochmal für deine Hilfe! –
@AllieH Die lokale Variable new_node verweist nicht auf die lokale Variable class_id. Die lokale Variable namens new_node verweist auf einen Knoten, der ein Member namens class_id hat, das nicht mit der lokalen Variablen namens class_id in Beziehung steht. – immibis