首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

新手刚学文件,盲目.输出来的数据都有,但是还有一些乱码?等待高人解决!重分献上!该如何解决

2012-02-09 
新手刚学文件,盲目...输出来的数据都有,但是还有一些乱码?等待高人解决!重分献上!源代码如下:#includeios

新手刚学文件,盲目...输出来的数据都有,但是还有一些乱码?等待高人解决!重分献上!
源代码如下:
#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);



}

热点排行