0
我想將字符串從一個結構中的字段複製到另一個結構(一個結點),這樣我就可以最終創建一個哈希表。但是,我似乎在實際的字符串複製中遇到了一些問題。我已經創建了一個for循環來遍歷源stuct中的字符串,並且我知道迭代工作正常,因爲如果我printf源字符串(data [i] .c_name),它們會打印出來。不幸的是,當我嘗試打印目標(class_id)時,它似乎是空的(因此我的哈希函數當然沒有太多)。任何洞察潛在的問題在這裏將不勝感激。如果我沒有給出足夠的上下文,請讓我知道。C - 將字符串從一個結構複製到節點的問題
#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);
}
}
啊太棒了!謝謝吉爾伯特!雖然我在概念上有點困惑 - new_node只是指向class_id,那麼爲什麼不打印class_id工作?另外 - 我絕對可以理解確保只允許LENGTH被複制的重要性,但是由於這兩個字段都是由相同的長度定義的,爲什麼離開它不安全呢?再次感謝你的幫助! –
@AllieH名爲new_node的局部變量未指向名爲class_id的局部變量。名爲new_node的局部變量指向一個節點,該節點具有一個名爲class_id的成員,該成員與名爲class_id的局部變量無關。 – immibis