格式化字符串问题

BallyTan 2002-02-27 10:18:38
我有一个如下格式的文本文件:
(6) (40) (日期字段) (8)
HK Hong Kong 2001-7-9 10:08:00 1234567B
PRC CHINA 2001-7-9 10:08:00 1234567B
DG Dong Guang 2001-7-12 9:52:00 1234567B
我想读出来显示。
代码这样写的:
char buf[64];
char f1[6];
char f2[40];
char f3[10];
char f4[8];

FILE *fp;
int i=1;
fp=fopen("f:\\txt\\bas01.txt","r");
while(fgets(buf,64,fp)!=NULL) {
printf("%d\n",i);
sscanf(buf,"%[^|]|%[^|]|%[^|]|%s",f1,f2,f3,f4);
printf("%s,%s,%s,%s",f1,f2,f3,f4);
i++;
}
fclose(fp);
可显示结果为:
1
HK Hong Kong 2001-7-9 10:08:00 1234567B,,,
2
PRC CHINA 2001-7-9 10:08:00 1234567B,,,
3
DG Dong Guang 2001-7-12 9:52:00 1234567B,,,
而我想的结果是:
1
HK ,Hong Kong ,2001-7-9 10:08:00 ,1234567B
2
PRC ,CHINA ,2001-7-9 10:08:00 ,1234567B
3
DG ,Dong Guang ,2001-7-12 9:52:00 ,1234567B
各位邦邦我忙.


...全文
25 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lemon-sai 2002-02-27
  • 打赏
  • 举报
回复
#include <conio.h>是不要的,我调试的时候用的,忘记去掉了。
当然我现在把所有的空格都变成逗号了,和不完全符合你的要求,
自己改改吧:)
Lemon-sai 2002-02-27
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <conio.h>
main()
{
char buf[64];
/*char f1[6];
char f2[40];
char f3[10];
char f4[8];*/

FILE *fp;
int i=1,j;
fp=fopen("f:\\txt\\bas01.txt","r");
while(fgets(buf,64,fp)!=NULL) {
printf("%d\n",i);
/*这里用下面的一段来吧空格变成逗号*/
j=0;
while (buf[j])
{
if (buf[j]==' ') buf[j]=',';
j++;
}

printf("%s\n",buf);
i++;
}
}
Lemon-sai 2002-02-27
  • 打赏
  • 举报
回复
sscanf(buf,"%[^|]|%[^|]|%[^|]|%s",f1,f2,f3,f4);
我调试过发现是这一句有问题,尝试一下其他的吧
BallyTan 2002-02-27
  • 打赏
  • 举报
回复
sscanf(buf,"%[^|]|%[^|]|%[^|]|%s",f1,f2,f3,f4);
这句我用BORLAND C++5 编译没有问题的。不过用C++B是有问题的。我是看人家这么写的,我
不明白它的字符串的意义,请帮我说说
致于最前上面的问题,我用C++BUILDER已搞定了,BORLANDC++5还没有搞定

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧