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



我是结构和指针的新手,我看不出这段代码有什么问题:

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 %sn", cap[i].id, cap[i].name);
    }
}

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

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

就像它忽略了我在 n 之后输入的所有内容一样。 有什么想法吗?

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

最新更新