gpt4 book ai didi

C:输出由问号组成?

转载 作者:太空宇宙 更新时间:2023-11-04 08:33:25 25 4
gpt4 key购买 nike

编辑,明白了。新代码如下:

  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

吉姆 J 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 萨莫拉院长 (281)906-9590

88 ?J?I?琼斯 818

89 吉姆·琼斯 616

90 富酒吧 123

如您所见,在第 88 行,输出以 ?J?I? 开头...以下所有输入均正常。我读到它与不可读的值有关,但我对否则发生的事情一无所知!我是 C 的新手,非常感谢任何帮助!

最佳答案

card *newcard = malloc(sizeof(newcard));

只分配 4 个字节 - 指针的大小

应该是:

card *newcard = malloc(sizeof(*newcard));

关于C:输出由问号组成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27285979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com