我想我遗漏了一些关键的东西,找不到答案。如果我想在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);
检查数据类型。
更改
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()
调用是否成功。