新手刚学文件,盲目...输出来的数据都有,但是还有一些乱码?等待高人解决!重分献上!
源代码如下:
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
struct stu
{
char name[20];
char num[20];
char email[20];
};
void main()
{
FILE *fp;
struct stu a[3];
char c;
if((fp=fopen( "student.txt ", "w "))==NULL)
{
printf( "Can 't open this file\n ");
exit(0);
}
for(int i=0;i <3;i++)
{
cout < < "请输入第 " < <i < < "个同学的信息-〉 " < <endl;
cout < < "请输入姓名: ";
cin> > a[i].name;
cout < < "请输入号码: ";
cin> > a[i].num;
cout < < "请输入E-mail: ";
cin> > a[i].email;
cout < < "您继续吗?Y/N " < <endl;
if(c=getchar()== 'y ')
continue;
else
break;
}
for(i=0;i <3;i++)
{
fwrite(&a[i],sizeof(struct stu),1,fp);
}
fclose(fp);
}
里面还有个问题是判断结束有问题.
而且不能连续输如三个学生的信息.
如何把结构体的信息正确的保存到student.txt文件中去,最好格式可以调整.
哪位人能指教俺?
重分献上!........................................................
[解决办法]
里面还有个问题是判断结束有问题.
输入一个Y或者N后,输入缓冲区还有一个( '\n ')的字符,所以第二此判断c= '\n ',循环就结束了,这个问题在用getchar多次获取字符的时候要小心的。
--------------
如何把结构体的信息正确的保存到student.txt文件中去,最好格式可以调整.
写结构体前先把结构体置空,这样输入不会有乱码,至于格式调整,就看你fwrite怎么调用了
-----
改过的程序:
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <memory.h>
struct stu
{
char name[20];
char num[20];
char email[20];
};
void main()
{
FILE *fp;
struct stu a[3];
char c;
if((fp=fopen( "student.txt ", "w "))==NULL)
{
printf( "Can 't open this file\n ");
exit(0);
}
memset(a,0,sizeof(a));
for(int i=0;i <3;i++)
{
cout < < "请输入第 " < <i < < "个同学的信息-〉 " < <endl;
cout < < "请输入姓名: ";
cin> > a[i].name;
cout < < "请输入号码: ";
cin> > a[i].num;
cout < < "请输入E-mail: ";
cin> > a[i].email;
cout < < "您继续吗?Y/N " < <endl;
c=getchar();
getchar();
if(c== 'y ')
continue;
else
break;
}
for(i=0;i <3;i++)
{
fwrite(&a[i],sizeof(struct stu),1,fp);
}
fclose(fp);
}