| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1407 人关注过本帖
标题:除了 fgetc, 有没有其他读文本文件的方法?(文本文件含多个回车符)
只看楼主 加入收藏
南京小萝卜
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-7-29
收藏
 问题点数:0 回复次数:4 
除了 fgetc, 有没有其他读文本文件的方法?(文本文件含多个回车符)
我有一个磁盘文件,aaa.txt:
start=20000
end=60000
speed=3000
time=10s

用以下程序把它的内容读出来:

#include <stdio.h>

main(void)

{

FILE *fptr;
char filename[] ="aaa.txt";
char filecontents[256];
char *fff;
int reval=0;
char c;
int i;

if ((fptr=fopen(filename,"r"))==NULL){
printf("Can not open %s. \n",filename);
reval=1;
} else {

i=0;
while((c=fgetc(fptr))!=EOF){
filecontents[i]=c;
i++;
}
filecontents[i]='\0';
fclose(fptr);
}

printf("ready to dispaly the contenets: \n\n");
for (i=0;filecontents[i]!='\0';i++)
printf("%c",filecontents[i]);

return 0;
}

小萝卜的问题是:
1。读文件,除了用c=fgetc(fptr)一个字符一个字符读,还有其他什么方法?我曾经试过fgets函数。但是fgets碰到回车就不读了,而我的aaa.txt里有好几个回车,因此用不了。而且有个尾巴:filecontents[i]='\0',否则在下面显示的时候就要出错。

2。读出来的字符,我这里是放在一个数组filecontents里。一开始我定义了数组的大小是filecontents[256],最多放256个字符。有没有什么办法,不用事先定义数组的大小,或者干脆用char *file,也就是用一个字符串来读呢?我试了几次,没有成功。

望各位大拿出招了,多谢多谢。
搜索更多相关主题的帖子: fgetc 文本文件 回车 
2007-08-04 01:15
medicihophy
Rank: 1
等 级:新手上路
威 望:1
帖 子:102
专家分:0
注 册:2007-7-28
收藏
得分:0 

你是基于实现完全不知道文件内容结构的读法?

[此贴子已经被作者于2007-8-4 9:09:01编辑过]


2007-08-04 08:37
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 

int start;

unsigned end;

int speed;

int time;
FILE *input;
input=fopen("aaa.txt","r");

fscanf(input,"start=%d",&start);

fscanf(input,"end=%u",&end);
fscanf(input,"speed=%d",&speed);
fscanf(input,"time=%d",&time);


My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2007-08-04 11:08
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
类似那个,当然可以将这些fscanf合并为一个fscanf
如果那样不行可以尝试fscanf后加一个fgets用来换行

[此贴子已经被作者于2007-8-4 11:10:13编辑过]


My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2007-08-04 11:09
南京小萝卜
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-7-29
收藏
得分:0 

孔明:

程序读不出来。

我的程序更简单,只读一个参数start:

int start;

FILE *input;
input=fopen("aaa.txt","r");

fscanf(input,"start=%d",&start);

printf("start=%d",start);

fclose(fptr);

在我的机器上,显示的是start=-858399440 这么一个怪数字,反正就是没有读出来。请问是什么地方出了问题?

另外,字符串怎么读出来。比如aaa.txt里还有一项:name=zhang_san.是设个 char *name,然后用fscanf(input, "name=%s",name),把它读到name里,然后再用printf("name=%s",name) 把它print 出来吗?

多谢多谢。

2007-08-05 12:53
快速回复:除了 fgetc, 有没有其他读文本文件的方法?(文本文件含多个回车符)
数据加载中...
 
   



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

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