结构体课后作业
#include <stdio.h>#include <string.h>
struct Student
{
int id;
int sex;
char qq;
char email;
};
int main(void)
{
struct Student stu;
char sex;
char ch;
printf("请输入学生ID:");
scanf("%d", &stu.id);
printf("请输入学生性别(1/0):");
scanf("%d", &stu.sex);
printf("请输入QQ号:");
scanf("%s", stu.qq);
printf("请输入Email地址:");
scanf("%s", stu.email);
printf("\n=====数据录入完毕=====\n\n");
printf("当前结构体变量中的数据是:\n");
printf("ID:%d\n", stu.id);
printf("性别:%s\n", (stu.sex == 1) ? "男" : "女");
printf("QQ号是:%s\n", stu.qq);
printf("Email是:%s\n", stu.email);
return 0;
}
email若输入123@qq.com无法打印是为什么 scanf函数在读取字符串时会遇到空格、制表符或换行符时会停止读取,因此在输入"123@qq.com"时,由于其中包含了'@'符号,scanf函数会将其视为输入结束的标志,从而导致无法正确读取整个邮箱地址。
为了解决这个问题,可以使用%s格式读取字符串时,可以在格式控制字符串中加入限定符,如"%31s"来限制最大输入长度为31个字符(不包括结尾的'\0'),从而避免超出数组边界的问题。因此,对于邮箱地址的输入,应该修改为:
scanf("%31s", stu.email);
这样就能够正确读取整个邮箱地址,而不会因为特殊字符而导致输入被截断。 isdkz 发表于 2023-11-14 18:18
scanf函数在读取字符串时会遇到空格、制表符或换行符时会停止读取,因此在输入"123@qq.com"时,由于其中包 ...
为什么我改了还是打印不出呢?
页:
[1]