【问题标题】:Using strings or pointers to strings in struct在结构中使用字符串或指向字符串的指针
【发布时间】:2020-10-30 00:59:16
【问题描述】:

我想我遗漏了一些重要的东西,我找不到答案。如果我想在 struct 中使用字符串,使用 char 数组还是指向它们的指针更好? 以下代码按预期工作,但会引发警告 “警告 C4047 'function': 'const char ' 与 'char ()[3] 的间接级别不同”

当与以下结构定义一起使用时

typedef struct element {
    char name[20];
    char symb[3];
    double wt;
}element;

以及以下创建元素的过程

element e;
char name[20];
char symbol[3];
scanf("%s %s %lf", &name, &symbol, &e.wt);
strcpy(&e.name, &name);
strcpy(&e.symb, &symbol);

【问题讨论】:

    标签: c pointers char strcpy pointer-to-array


    【解决方案1】:

    检查数据类型。

    改变

     strcpy(&e.name, &name);
    

     strcpy(e.name, name);
    

    scanf("%s %s %lf", &name, &symbol, &e.wt);
    

    scanf("%s %s %lf", name, symbol, &e.wt);
    

    也就是说,最好使用fgets() 来接受用户输入。如果您必须使用scanf(),则必须在使用扫描值之前检查scanf() 调用是否成功。

    【讨论】:

    • 谢谢,我会调查fgets(),还没有听说过。
    猜你喜欢
    • 2020-03-23
    • 2021-04-15
    • 2016-12-30
    • 1970-01-01
    • 2013-04-26
    • 1970-01-01
    • 2015-10-10
    • 1970-01-01
    相关资源
    最近更新 更多