| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1600 人关注过本帖
标题:[求助]txt文件读取问题
只看楼主 加入收藏
hualinxf
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-8-21
收藏
 问题点数:0 回复次数:9 
[求助]txt文件读取问题

5/5/9 6/6/10 8/8/11 7/7/12 6/6/7
7/7/13 8/8/14 2/10/15 1/9/16
2/2/17 8/11/18 6/12/19 4/4/20
7/13/21 1/1/22 3/3/23 5/14/24
文件如上f.txt,逐行读取,如若后面跟的是三个字符串,直接读取成1 2 3,四个则读取成1 2 3,3 4 1两行数据,如果是五个则读取成1 2 3,3 4 1,4 5 1三行数据,最多五个。其中12345是指第几个字符串。高手们,求助呀,写了一个,只能读一行。郁闷,不会跳到下一行。
#include <stdio.h>
#include <string.h>
int main(void)
{
char tmp[1024];
char myarray[5][20],str[81];
char c;
int i,num=0,word=0;
char *bak=tmp;

FILE *fp=fopen("e://f.txt","rt");

if(!fp)
{
printf("can't open file ,exiting ...\n");
}

while(fgets(bak =tmp,1023,fp))
{
for(i=0;(c=str[i])!='\n';i++)
{
if(c==' ')
word=0;
else if(word==0)
{
word=1;
num++;
}
}
if(num==3)
{
sscanf(tmp,"%s %s %s\n",myarray[0],myarray[1],myarray[2]);
printf("%s %s %s\n", myarray[0],myarray[1],myarray[2]);
}
putchar('\n');
if(num==4)
{
sscanf(tmp,"%s %s %s %s\n",myarray[0],myarray[1],myarray[2],myarray[3]);
printf("%s %s %s\n", myarray[0],myarray[1],myarray[2]);
printf("%s %s %s\n", myarray[2],myarray[3],myarray[0]);
}
putchar('\n');
if(num==5)
{
sscanf(tmp,"%s %s %s %s %s\n",myarray[0],myarray[1],myarray[2],myarray[3],myarray[4]);
printf("%s %s %s\n", myarray[0],myarray[1],myarray[2]);
printf("%s %s %s\n", myarray[2],myarray[3],myarray[0]);
printf("%s %s %s\n", myarray[3],myarray[4],myarray[0]);
}
putchar('\n');
}
return 0;
}

搜索更多相关主题的帖子: txt 文件 include 字符 
2007-08-21 10:43
hualinxf
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-8-21
收藏
得分:0 

不知道如何跳到下一行,有人帮我改一下吗

2007-08-21 16:03
hualinxf
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-8-21
收藏
得分:0 
哦,好像没有人帮我哦
2007-08-22 08:32
lishizelibin
Rank: 2
等 级:论坛游民
帖 子:513
专家分:41
注 册:2007-5-10
收藏
得分:0 
我只说说
while(!eof)
fgets();
说明:这是伪码
不到文件结尾,用fgets读取每一行

惟有学习不断的学习!
2007-08-22 08:53
hualinxf
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-8-21
收藏
得分:0 

每一行格式不一样呢,试了一下,出不来
2007-08-22 09:17
hualinxf
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-8-21
收藏
得分:0 

#include <stdio.h>
#include <string.h>
int main(void)
{
char tmp[1024];
char myarray[5][20];
int i=0,line_num=1;
char *bak=tmp;

FILE *fp=fopen("e://f.txt","rt");

if(!fp)
{
printf("can't open file ,exiting ...\n");
}

while(fgets(bak = tmp, 1023, fp)!=EOF)
{
switch (sscanf(tmp, "%s %s %s %s %s", myarray[i][i], myarray[][],...))
{
case 3:
sscanf(tmp,"%s %s %s\n",myarray[0],myarray[1],myarray[2]);
printf("%s %s %s\n", myarray[0],myarray[1],myarray[2]);
break;
case 4:
sscanf(tmp,"%s %s %s %s\n",myarray[0],myarray[1],myarray[2],myarray[3]);
printf("%s %s %s\n", myarray[0],myarray[1],myarray[2]);
printf("%s %s %s\n", myarray[2],myarray[3],myarray[0]);
break;
case 5:
sscanf(tmp,"%s %s %s %s %s\n",myarray[0],myarray[1],myarray[2],myarray[3],myarray[4]);
printf("%s %s %s\n", myarray[0],myarray[1],myarray[2]);
printf("%s %s %s\n", myarray[2],myarray[3],myarray[0]);
printf("%s %s %s\n", myarray[3],myarray[4],myarray[0]);
break;
defalt:
printf("bad line of date at %d\n", line_num);
}
fclose(fp);
return 0;
}
请大家帮忙改一下,运行有错误

2007-08-23 20:50
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
我彻底无语。。。。。。。。。。
楼上,别人的“示例代码”不要照抄好不好???



[此贴子已经被作者于2007-8-23 20:53:04编辑过]

2007-08-23 20:52
hualinxf
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-8-21
收藏
得分:0 
....5555
2007-08-24 09:03
hualinxf
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-8-21
收藏
得分:0 

#include <stdio.h>
#include <string.h>
int main(void)
{
char tmp[1024];
char myarray[5][20];
int i=0,line_num=1;
char *bak=tmp;

FILE *fp=fopen("e://f.txt","rt");

if(!fp)
{
printf("can't open file ,exiting ...\n");
}

while(fgets(bak = tmp, 1023, fp)!=EOF)
{
switch (sscanf(tmp, "%s %s %s %s %s", myarray[i], myarray[i+1],myarray[i+2],myarray[i+3],myarray[i+4]))
{
case 3:
sscanf(tmp,"%s %s %s\n",myarray[0],myarray[1],myarray[2]);
printf("%s %s %s\n", myarray[0],myarray[1],myarray[2]);
break;
case 4:
sscanf(tmp,"%s %s %s %s\n",myarray[0],myarray[1],myarray[2],myarray[3]);
printf("%s %s %s\n", myarray[0],myarray[1],myarray[2]);
printf("%s %s %s\n", myarray[2],myarray[3],myarray[0]);
break;
case 5:
sscanf(tmp,"%s %s %s %s %s\n",myarray[0],myarray[1],myarray[2],myarray[3],myarray[4]);
printf("%s %s %s\n", myarray[0],myarray[1],myarray[2]);
printf("%s %s %s\n", myarray[2],myarray[3],myarray[0]);
printf("%s %s %s\n", myarray[3],myarray[4],myarray[0]);
break;
defalt:
printf("bad line of date at %d\n", line_num);
}
fclose(fp);
return 0;
}
}
修改后如上,还是只能对第一行进行判断 55555555

[此贴子已经被作者于2007-8-24 9:06:26编辑过]

2007-08-24 09:05
hualinxf
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-8-21
收藏
得分:0 

有人帮我看一下吗?

2007-08-24 16:41
快速回复:[求助]txt文件读取问题
数据加载中...
 
   



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

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