|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
结构体初学,打印时,在黑窗口输入时会出问题无法正常打印,请问哪里出错了??
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
struct student {
int num;
char name[20];
char sex;
int age;
float score;
char addr[30] ;
};
int main()
{
struct student sarr[3];
int i;
for (i = 0; i < 3; i++)
{
scanf("%d%s %c%d%f%s",&sarr[i].num,sarr[i].name,&sarr[i].sex,&sarr[i].age,&sarr[i].score,sarr[i].addr);
}
for (i = 0; i < 3; i++)
{
printf("%d %s %c %d %5.2f %s\n", sarr[i].num, sarr[i].name, sarr[i].sex, sarr[i].age, sarr[i].score, sarr[i].addr);
}
return 0;
}
你的代码看起来已经非常好了,其定义和使用结构体都没有问题。不过,如果你在输入时遇到了问题,可能的原因是你在使用 scanf 函数获取输入时数据的格式出错了。
你的 scanf 调用如下:
- scanf("%d%s %c%d%f%s",&sarr[i].num,sarr[i].name,&sarr[i].sex,&sarr[i].age,&sarr[i].score,sarr[i].addr);
复制代码
根据这个 scanf 格式字符串,你应该按照下面的顺序和格式输入数据:
1. 一个整数(例如,101)。
2. 不含空格的一个字符串(例如,张三)。
3. 一个字符(例如,M)。
4. 一个整数(例如,20)。
5. 一个浮点数(例如,98.5)。
6. 不含空格的一个字符串(例如,北京)。
每个数据之间应该用空格分隔。
举个例子,你的输入应该是类似这样的:
你的 scanf 语句在读取 name 和 addr 字段时,不能处理含有空格的字符串。如果你的输入中的这些字段包含空格,可能就会出现问题。
注意: scanf 函数中的 %s 格式化符号是以空格、制表符或换行符作为字符串结束的标志的,所以无法读取含有空格的字符串。
如果你的输入数据中的 name 或 addr 可能会包含空格,你需要使用其他的读取方式,例如 fgets 函数。然而, fgets 会把换行符也读进来,因此需要额外处理这个换行符。
|
|