編輯,想通了。新代碼如下:C:輸出包含問號?
void add_card_to_rolodex(card *card_array)
{
card newcard = {"", "", ""};
char newuser[250];
scanf(" %[^\n]%*c", newuser);
strcat(newuser, "\n");
newcard.last_name = strdup(strtok(newuser, " "));
newcard.first_name = strdup(strtok(NULL, " "));
newcard.phone_number = strdup(strtok(NULL, " "));
card_array[size] = newcard;
size++;
}
舊代碼:
void add_card_to_rolodex(card *card_array)
{
//Function asks for input and adds it to the passed array
//card is a struct of char *
card *newcard = malloc(sizeof(newcard));
char newuser[250];
scanf(" %[^\n]%*c", newuser);
strcat(newuser, "\n");
newcard->last_name = strdup(strtok(newuser, " "));
newcard->first_name = strdup(strtok(NULL, " "));
newcard->phone_number = strdup(strtok(NULL, " "));
//size is global
card_array[size] = *newcard;
size++;
free(newcard);
}
我試圖添加到文件的末尾,以前被讀取到一個數組。 這是在調用此函數之前的原始輸出。
...
81薩斯英格麗(648)685-8104
82沃倫捉鬼(570)247-2921
83沃森維拉(640)276-5047
84白石韋恩(681)747-8152
85個溫特斯達米安(790)348-2599
86紐約基思(592)276-6850
87薩莫拉院長(281)906-9590
可以說,我調用該函數3次,我作爲輸入:
鮑勃·瓊斯818
,吉姆616
美孚酒吧123
當我再次打印陣列我得到:
81貝萊斯英格麗(648)685-8104
82沃倫·巴菲(570)247-2921
83沃森維拉(640)276-5047
84白石韋恩(681)747-8152
85溫特斯達米安(790)348-2599
86紐約基思(592)276-6850
87 Zamora的迪安(281)906-9590
88?J·我?瓊斯818
89吉姆·瓊斯616
90美孚杆123
正如你所看到的,上線88,輸出用?J·我?......所有的以下輸入啓動精細。 我讀到它與不可讀取的值有關,但我相當失落,否則會發生什麼!我對C相當陌生,任何幫助表示讚賞!
這是不正確的。 'card_type'被聲明爲'card * card_array'。 – 2014-12-04 04:10:15
哎呀,你就是。我把它編輯出來(我最初把卡片*弄糊塗了)。謝謝 – Andras 2014-12-04 04:14:42