| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 665 人关注过本帖
标题:求教一个关于文件读写的问题
只看楼主 加入收藏
zzb_ks
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2005-7-6
收藏
 问题点数:0 回复次数:6 
求教一个关于文件读写的问题
我的程序的一部分是这样的:
#include <stdio.h>
#include <stdlib.h>
void f_read(char p[][10])
{
FILE* fp;
int i=0,j;
if((fp=fopen("aaaa.txt,"rt""))==NULL)
{
printf("文件打开错误!!!");
getche();
exit(0);
}
do
{
for(j=0;fgetc(fp)!='\r';j++)
p[i][j]=fgetc(fp);
p[i][j]='\0';
i++;
}while(!feof(fp));

}
void main()
{
char name[20][10];
f_read(name);
getche();
}
上面的程序在VC下编译通过了,但是却不能运行。另外一个问题就是,有文件的操作函数来读写汉字时好象会出错,哪位大虾来给小弟我指点一下,谢谢!!
搜索更多相关主题的帖子: 文件 
2006-04-19 00:09
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 

你那个for 里没判断是否到文件尾,结果把文件尾跳过去了使得while无法结束
一个汉字由于占两字节,所以文件的有些操作函数会出错了

[CODE]
#include <stdio.h>
#include <stdlib.h>
void f_read(char p[][10])
{
FILE* fp;
int i=0,j;

if((fp=fopen("aaaa.txt","rt"))==NULL)
{
printf("文件打开错误!!!");
exit(0);
}
for(j=0;!feof(fp);j++)
{
p[i][j]=fgetc(fp); /*大体是一样的*/
if(p[i][j]=='\n')
{
p[i][j]='\0';
i++;
j=-1;
}
}
fclose(fp);
}

int main()
{
char name[20][10];

f_read(name);
printf("%s\n",name[0]); /*看看结果*/
return 0;
}

[/CODE]
C-Free(XP) 正确运行


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-04-19 04:59
zzb_ks
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2005-7-6
收藏
得分:0 
楼上的这位大哥,可否指点一下汉字要如何操作,我的程序在for循环里的条件加上!feof(fp)条件应该可以了吧
因为我要读的是多行的文件,遇到行结束时应该是以'\r'字符结束吧
#include <stdio.h>
#include <stdlib.h>
void f_read(char p[][10])
{
FILE* fp;
int i=0,j;
if((fp=fopen("aaaa.txt,"rt""))==NULL)
{
printf("文件打开错误!!!");
getche();
exit(0);
}
do
{
for(j=0;(fgetc(fp)!='\r')&&(!feof(fp));j++)
p[i][j]=fgetc(fp);
p[i][j]='\0';
i++;
}while(!feof(fp));
fclose(fp);

}
void main()
{
char name[20][10];
f_read(name);
getche();
}

2006-04-19 20:27
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 

第一 if((fp=fopen("aaaa.txt,"rt""))==NULL)
这行你看看你" 的位置,多么混乱

第二 文件里存储的行结束符是'\n'

第三 fgetc()执行一次,文件内部指针就向后移一位,你看看你的for()
有一次判断调用,可没赋值,那么有些数据就漏掉了


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-04-19 23:04
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 

2楼程序是可以读取汉字,并显示的(C-Free),win-tc在中文dos模式下也可以


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-04-20 01:56
cordier
Rank: 2
等 级:论坛游民
威 望:1
帖 子:449
专家分:14
注 册:2006-2-9
收藏
得分:0 
#include <stdio.h>
#include <stdlib.h>
void f_read(char p[][10])
{
FILE* fp;
int i=0,j;
if((fp=fopen("aaaa.txt,"rt""))==NULL)
{
printf("文件打开错误!!!");
getche();
exit(0);
}
do
{
for(j=0;fgetc(fp)!='\r';j++) /*这里如果要用fgetc(fp)的话,你应当寄存到一个变量里*/
p[i][j]=fgetc(fp);
p[i][j]='\0';
i++;
}while(!feof(fp));

}
void main()
{
char name[20][10];
f_read(name);
getche();
}

2006-04-20 15:08
zzb_ks
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2005-7-6
收藏
得分:0 
多谢二楼的,你的提醒简直就是当头棒喝,我老是不注意文件读取时,文件指针是会自动增加的。也谢谢楼上的指教

2006-04-21 22:10
快速回复:求教一个关于文件读写的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012260 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved