0
#include <stdio.h>
#define MAX 3 // students in class
#define LEN 20 // max lengths stydent's name
typedef struct {
char name[LEN];
int am;
float tv;
}student;
void read (student board[]) { //this function should fill the board of structs
int i;
for (i=0; i<MAX; i++) {
printf("\n give student's name");
scanf ("%s",&board[i].name);
}
}
void read (student board[]);
int main (void) {
student class[MAX];
read (class);
return 0;
}
当我尝试编译它,我得到这个错误结构体和焦炭串
let2.c:15:3:警告:格式 '%s' 的期望类型 '字符' 的说法,但参数2的类型为'char()[20]'[-Wformat =]
let2.c:15:3:warning:格式'%s'需要类型为'char '的参数,但参数2的类型为'char()[20]'[-Wformat =]
哇!如此快速和准确。非常感谢你 !! 不是指向数组本身的指针。 你能解释一点点吗? – noobgrammer 2014-09-19 20:50:06
这将是一个很好的机会,提到没有最大字段宽度的'%s'的危险。 – mafso 2014-09-19 20:53:09
我不得不说这是令人费解的,因为对于任何'类型arr [N]',只要您在“声明范围”中“测试它们”,“arr”和“&arr” arr'。因此,无论是编译器在这里发布了一个徒劳的警告,还是'board [i] .name'和'board [i] .name'的值都不相同,因为它们并未在“原始”声明范围中使用。 – 2014-09-19 21:01:18