scanf("%s", arr[i].name);
时间: 2024-06-16 19:03:07 浏览: 4
scanf("%s", arr[i].name); 是C语言中的输入函数,用于从标准输入中读取字符串并存储到数组arr[i].name中。具体解释如下:
- scanf:是C语言中的输入函数,用于从标准输入(键盘)中读取数据。
- "%s":是scanf函数的格式控制符,表示读取一个字符串。
- arr[i].name:表示数组arr的第i个元素的name成员,用于存储读取到的字符串。
该语句的作用是从标准输入中读取一个字符串,并将其存储到数组arr的第i个元素的name成员中。
相关问题
scanf("%s", &arr[i].name);
scanf("%s", &arr[i].name); 是一个C语言中的输入函数,用于从标准输入中读取字符串并将其存储到arr[i].name变量中。具体解释如下:
1. scanf函数:scanf是C语言中的输入函数,用于从标准输入(通常是键盘)读取数据。
2. "%s"格式控制符:"%s"是scanf函数的格式控制符之一,用于读取字符串。
3. &arr[i].name:&arr[i].name表示arr数组中第i个元素的name成员变量的地址。在C语言中,数组名本身就是数组首元素的地址,通过下标访问数组元素时,可以使用&运算符获取该元素的地址。
所以,scanf("%s", &arr[i].name); 的作用是从标准输入中读取一个字符串,并将其存储到arr数组中第i个元素的name成员变量中。
#include<stdio.h> #include<string.h> struct student{ char name[100]; int age; }; int main(void) { int i,j; struct student arr[5]; for(i=0;i<5;i++) { scanf("%s%d",arr[i].name,&arr[i].age); } for(i=0;i<4;i++) { for(j=0;j<4-i;j++) { if(arr[j].age>arr[j+1].age) { struct student t=arr[j]; arr[j]=arr[j+1]; arr[j+1]=t; } } } for(i=0;i<5;i++) { printf("%s%d",arr[i].name,arr[i].age); 为什么输出不了结果 } }
这段代码中有一个缺少右括号的问题,最后一行应该加上右括号。另外,还需要注意输出格式,应该在姓名和年龄之间加上一个空格。以下是修改后的代码:
```
#include<stdio.h>
#include<string.h>
struct student{
char name[100];
int age;
};
int main(void) {
int i,j;
struct student arr[5];
for(i=0;i<5;i++) {
scanf("%s%d",arr[i].name,&arr[i].age);
}
for(i=0;i<4;i++) {
for(j=0;j<4-i;j++) {
if(arr[j].age>arr[j+1].age) {
struct student t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
}
}
}
for(i=0;i<5;i++) {
printf("%s %d\n",arr[i].name,arr[i].age); //注意输出格式和右括号
}
return 0; //需要加上返回值
}
```