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

Linux上使用C++显示文本文档的有关问题

2012-10-15 
Linux下使用C++显示文本文档的问题!显示文本文档的代码如下:void displaystu(){printf(********学生信息

Linux下使用C++显示文本文档的问题!
显示文本文档的代码如下:
void displaystu()
{
printf("********学生信息显示********\n");
in=fopen("c.doc","r");/*FILE * fopen(const char * path,const char * mode); mode有几种形式,
r 以只读方式打开文件,该文件必须存在。 r+ 以可读写方式打开文件,该文件必须存在。 */
fread(&number,sizeof(unsigned int),1,in);
memset(stu,0,sizeof(stu));/*void *memset(void *s, int ch, size_t n); ,函数解释:将s中前n个字节
替换为ch并返回s */
len=sizeof(struct stu_info);//len函数的功能为 返回文本字符串中的字符数。 
fread(stu,len,number,in);
unsigned int i;
printf("学号\t姓名\t性别\t手机号\n");
for(i=0;i<1;i++)
printf("%10s%9s%11d%12s\n",
stu[i].stu_num,stu[i].name,stu[i].sex,stu[i].telephone);
printf("******************************************\n");
fclose(in);
}
提示错误:
学号姓名性别手机号
20090001王一男15215380001
20090002张二女15215380002
20090003刘三男15215380003
?性别电话
20090001王一男15215380001
20090002张二女15215380002
20090003刘三男15215380003
-108?话
20090001王一男15215380001
20090002张二女15215380002
20090003刘三男15215380003
如上面所显示的,本来准备让其显示一遍的,结果出现了三遍。而且第一行都会出现错误。不知到是哪里出现了问题,请教各位大侠了。

[解决办法]
你的文件是以二进制文件写的吗?还是怎么存储的?如果不是二进制的可以试试fscanf和fprintf。
[解决办法]
虽然听说linux下加不加b一个意思,但还是提醒楼主:
不要把
fopen("...","...");fscanf,fprintf,fclose //读时把\r\n替换成\n,写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待

fopen("...","...b");fread,fwrite,fclose //不作以上替换,遇到\x1a仍继续读;读写的内容当字节看待
弄混了
Windows下推荐使用WinHex软件查看文件或内存中的原始字节内容。

热点排行