jackpearson 发表于 2018-1-28 21:36:57

字符串scanf输入学生信息有误

#include <stdio.h>
#include <stdlib.h>
struct stu{
char name,major;
char birth,num;
}Student;//建立学生信息的结构体

int main(){
        for(int i=0;i<2;i++)
        {scanf("%s%s%s%s",Student.name,Student.birth,Student.num,Student.major);}
//利用scanf输入信息
        for(int i=0;i<2;i++)
        printf("%s\t%8s\t%8s\t%s\n",Student.name,Student.birth,Student.num,Student.major);
//利用printf输出信息
        system("pause");
}



代码如上图所示,遭遇到的问题是:输入与输出结果不匹配,运行结果如下图,主要问题是输入第二行的name值b出现在了第一个学生信息的birth,num字段后,且birth字段页包含了num字段值

orino 发表于 2018-1-28 21:53:53

字符串越界了,定义的时候,8位字符要定义9位,给'\0'字符留空间,不然输出的时候不知道什么地方停止

orino 发表于 2018-1-28 21:55:39

你这代码如果都是3个字符肯定不会出错。你或者一次性给大点空间吧

jackpearson 发表于 2018-1-28 22:30:13

谢谢答主解答,我懂啦,已经调整好了,就是你说的问题~O(∩_∩)O哈哈~
页: [1]
查看完整版本: 字符串scanf输入学生信息有误