gpt4 book ai didi

c - 扫描字符串输入总是失败

转载 作者:行者123 更新时间:2023-12-04 01:35:53 24 4
gpt4 key购买 nike

我尝试在函数中使用 scanf() 来获取输入字符串,但它一直失败,我不知道为什么。

这是我的代码的一部分。

typedef struct node {           
int id;
char * name;
char * address;
char * group;
struct node * next;
} data;

void showG(data * head) {
char * n = "";
int i = 0;
data * current = head;
scanf("%s", n);
printf("The group of %s is\n", n);

while (current != NULL) {
if (0 == strcmp(current->group, n)) {
printf("%d,%s,%s\n", current->id, current->name, current->address);
i = 1;
}

current = current->next;
}
if (0 == i) {
printf("no group found");
}
}

最佳答案

在您的代码中,

char * n = "";

使n指向字符串文字,该字符串通常放置在只读内存区域中,因此无法修改。因此,n 不能用于扫描另一个输入。您想要的是以下其中之一

  • 一个 char 数组,例如

    char n[128] = {0};
  • 指向 char 的指针,并具有正确的内存分配。

     char * n = malloc(128);

    请注意,如果您使用 malloc()n使用结束后,需要free()内存也一样,以避免内存泄漏。

注意:解决上述问题后,进行更改

scanf("%s", n);

scanf("%127s", n);

如果分配的是128字节,以避免内存溢出。

关于c - 扫描字符串输入总是失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30118605/

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