谁能告诉我为什么我的扫描不起作用?

时间:2014-12-02 11:50:24

标签: struct scanf

我是结构和指针的新手,我无法看清这段代码的错误:

struct {
    int id;
    char* name;
} cap[50];

void xep() {
    int i, n;
    scanf("%d", &n);
    for (i = 0; i < n; i++) {
        cap[i].id = i;
        scanf("%c", cap[i].name);
        printf("%d %s\n", cap[i].id, cap[i].name);
    }
}

在main中调用xep函数时,它只打印:

    0 (null)
    1 (null)
    2 (null)

喜欢它忽略我在n之后输入的所有内容。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

char * name是一个指针,但你没有为它分配任何内存。给它一个固定大小的字符名称[100]或分配一些内存。 你的scanf只有1个字符,你可能想要%s(字符串)而不是%c(字符)