烟台开发区教育局官网:询问IO流问题

来源:百度文库 编辑:中科新闻网 时间:2024/04/30 12:29:02
程序
#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
void main()
{ifstream f("filel.txt",ios::in);
if (!f){cout<<"can't open"<<endl;exit(1);}

char s[10];
f>>s;
cout<<s;cout<<endl;
f.close();

} 可运行
为什么程序
#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
void main()
{ifstream f("filel.txt",ios::in);int i=0;
if(!f){cout<<"can't open"<<endl;exit(1);}
f.seekg(0,ios::beg);char a[10];
while (a[i]!=NULL)
{f.read((char*)&a[i],sizeof (char));cout<<a[i];i++;}
}

有乱码 (文件为“1234”)

修改的一个程序
#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
void main()
{
ifstream f("filel.txt",ios::in);
if(!f){cout<<"can't open"<<endl;exit(1);}
f.seekg(0,ios::beg);
char a[10];
int i=0;
do{
f.read(&a[i],sizeof(char));
cout<<a[i];
}while (a[i++]!=NULL);
}
虽然能运行,但是结束符不能用NULL。所以必须要用文件结束标记EOF来控制循环。

f.seekg(0,ios::beg);
char a[10];
while (a[i]!=NULL)
{f.read((char*)&a[i],sizeof (char));
cout<<a[i];
i++;}
}
????没有乱码才叫怪呢!