前段时间,有个学妹跑过来找我,学长,我的程序出了bug,找不出来,你帮我看看吧。去了之后看到她的代码是这样写的(我只写出主要出问题的代码):
struct stu{
char name[10];
char passwd[10];
};
int i;
struct stu st;
for(i=0;i<10;i++)
st.name[i]=getc();
for(i=0;i<10;i++)
st.passwd[i]=getc();
fprintf(fd,"%s ",st.name);
fprintf(fd,"%s
",st.passwd);
这个学妹比较实在,她每次输入的名字都是10个字节,密码也是,于是乎就有了下面的问题;
她在后面的程序中把数据存文件中读出来,然后输入当时写的数据进行验证,结果是错的,验证总是失败的,百思不得姐,然后来找我了。
我在大概扫了代码后第一眼觉得好像没什么错啊,但是验证总是失败。很无奈,但是作为学长总不能说不会吧,多丢人。于是我再次仔细的审查了一下代码,终于发现了一点问题
for(i=0;i<10;i++)
st.name[i]=getc();
for(i=0;i<10;i++)
st.passwd[i]=getc();
上述代码扫一眼看似没什么问题,但是 问题就是出在这的,还有就是她每次都会输入10个字符;这段代码的问题在于在每次输入后没有给数组结尾加‘