#include <stdio.h>
//结构体
struct student{
int num;
char name[20];
char sex;
int age;
};
int main() {
struct student s={100,"zz",'M',20};
printf("%d %s %c %d\n",s.num,s.name,s.sex,s.age);
scanf("%d%s %c%d",&s.num,s.name,&s.sex,&s.age);
printf("%d %s %c %d\n",s.num,s.name,s.sex,s.age);
return 0;
}
该回答引用ChatGPT
在 C 语言中,printf 函数输出的结果会先缓存在内存中,直到遇到以下情况之一时才会输出:
遇到换行符 \n 或者输出缓冲区已满时;
使用 fflush 函数刷新缓冲区;
程序结束时自动刷新缓冲区。
因此,在您的代码中,printf 函数的输出结果并不会立即输出到屏幕上。当程序执行到 scanf 函数时,会等待用户的输入,直到用户输入完成并按下回车键时,scanf 函数才会返回。此时,printf 函数缓冲区中的内容才会被刷新到屏幕上,同时 scanf 函数读取用户输入的内容。
#include <stdio.h>
//结构体
struct student{
int num;
char name[20];
char sex;
int age;
};
int main() {
struct student s={100,"zz",'M',20};
printf("%d %s %c %d\n",s.num,s.name,s.sex,s.age);
scanf("%d%s %c%d",&s.num,s.name,&s.sex,&s.age);
printf("%d %s %c %d\n",s.num,s.name,s.sex,s.age);
return 0;
}