编辑,想通了。新代码如下: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