假如我这样写,struct student { int num; char name[10]; char gender; int c, oop, db; float avg; ,我将会scanf上面所有变量那char [10]是定义成谁的空间了?
时间: 2024-03-08 14:50:44 浏览: 49
在这个结构体中,`char name[10]`是定义成一个长度为10的字符数组,用于存储学生的姓名。当你使用`scanf`函数读入学生的姓名时,可以使用`%s`格式化字符串,并将其赋值给`name`数组,如下所示:
```c
struct student stu;
scanf("%d %s %c %d %d %d", &stu.num, stu.name, &stu.gender, &stu.c, &stu.oop, &stu.db);
```
在上面的代码中,`stu.name`表示结构体中的姓名数组,`%s`格式化字符串用于读入字符串类型的数据。
相关问题
下面定义结构变量的语句中错误的是()。 A. struct student{ int num; char name[20]; } s; B. struct { int num; char name[20]; } s; C. struct student{ int num; char name[20]; }; struct student s; D. struct student{ int num; char name[20]; }; student s;
错误的语句是 D. struct student{ int num; char name[20]; }; student s;
在定义结构体类型的同时定义结构变量时,要使用关键字 struct,将结构体类型名和变量名放在一起,用大括号括起来表示结构体类型的定义。正确的定义结构变量的语句是在结构体类型定义之后使用结构体类型名作为数据类型来定义变量,如 A、B、C 选项所示。而选项D中,将结构体类型名和变量名分开,没有使用 struct 关键字,这是错误的语句。
以下对结构类型变量std1的定义中错误的是 (A)#define STUDENT struct student STUDENT { int num; float age; } std1; (B)struct student { int num; float age; }; struct student std1; (C)struct { int num; float age; } std1; (D)struct { int num; float age; } student; struct student std1;
选项A中存在错误,因为`STUDENT`是一个宏定义,其展开后的代码为`struct student { int num; float age; } std1;`,这种方式定义结构体类型是不合法的。正确的定义方式是选项B中的方式,也可以使用匿名结构体的方式定义,如选项C所示,但是在后续使用结构体成员时需要通过类型来访问。选项D中定义了一个匿名结构体,并定义了一个变量`student`,但是后面定义`std1`时未指定类型,也是不合法的。
阅读全文