用c语言读取文件的第二行

LNLLfdaff 2011-08-24 09:45:29
用c语言读取文件的第二行,第三个域的内容

文件内容:
abcd 123456 59990 #1
efgh 123478 60000 #2

即取出60000,这个值不定长
...全文
1469 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
jernymy 2011-08-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 tianmo2010 的回复:]
这个代码就能够读出来。

C/C++ code
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>

#define LEN sizeof (struct gzb)

#define MAXLEN 20


struct gzb
{
char name[MA……
[/Quote]

++
这个就可以达到楼主要求的
wangw89 2011-08-24
  • 打赏
  • 举报
回复
还是看代码好啊!!
暮雨晨舟 2011-08-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 gdujian0119 的回复:]
fgets(buf, 1023, fp);//读第一行
fgets(buf, 1023, fp);//读第二行
sscanf(buf, "%*s%*s%s", data);//此句执行完后data即是楼主所需

其它代码具体参考一下一楼的;
[/Quote]
+++++
luciferisnotsatan 2011-08-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 gdujian0119 的回复:]

fgets(buf, 1023, fp);//读第一行
fgets(buf, 1023, fp);//读第二行
sscanf(buf, "%*s%*s%s", data);//此句执行完后data即是楼主所需

其它代码具体参考一下一楼的;
[/Quote]
++
孤独小剑 2011-08-24
  • 打赏
  • 举报
回复
fgets(buf, 1023, fp);//读第一行
fgets(buf, 1023, fp);//读第二行
sscanf(buf, "%*s%*s%s", data);//此句执行完后data即是楼主所需

其它代码具体参考一下一楼的;
tianmo2010 2011-08-24
  • 打赏
  • 举报
回复
你自己根据自己的情况,进行适当的修改。
tianmo2010 2011-08-24
  • 打赏
  • 举报
回复
把你的
abcd 123456 59990 #1
efgh 123478 60000 #2

放在a.txt文件中就可以了。
tianmo2010 2011-08-24
  • 打赏
  • 举报
回复
这个代码就能够读出来。

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>

#define LEN sizeof (struct gzb)

#define MAXLEN 20


struct gzb
{
char name[MAXLEN];
float gz,sanj,gs,sd;
struct gzb *next;
};

float income_tax(float income,float insurance);


void main()
{
FILE *fa,*fb;
char buf[1024];
struct gzb *p1;
/**
** a.txt
**
** 姓名 工资 三金
**
**/
if((fb=fopen("b.txt","w+"))==NULL)
{
printf("cannot open this file\n");
exit(1);
}

fprintf(fb,"姓名 工资 三金 税金 所得工资\n");

if((fa=fopen("a.txt","r"))==NULL)
{
printf("cannot open this a file\n");
exit(1);
}


while(fgets(buf,1024,fa)!=NULL)//此处可以做些技术性出来,是程序根据灵活性
{

p1=(struct gzb*)malloc(sizeof(struct gzb));

sscanf(buf,"%s%f%f",p1->name,&p1->gz,&p1->sanj);

printf("%s %f %f\n",p1->name,p1->gz,p1->sanj);

// p1->gs=income_tax(p1->gz,p1->sanj);

// fprintf(fb,"%s %f %f %f %f\n",p1->name,p1->gz,p1->sanj,p1->gs,p1->gz - p1->sanj - income_tax(p1->gz,p1->sanj));

}
fclose(fa);
fclose(fb);
}
tony2278 2011-08-24
  • 打赏
  • 举报
回复
不错!
zhang_xm001 2011-08-24
  • 打赏
  • 举报
回复
++好的,路过。。。
lvjing_CSDN 2011-08-24
  • 打赏
  • 举报
回复

#include <stdio.h>

int main()
{
FILE *infile;
int data;
infile = fopen("e:\\database\\infile.txt","r");
if(!infile)
return -1;

fscanf(infile,"%*[^\n]");/*读取第一行,但是不赋值给任何变量*/
fscanf(infile,"%*s %*s %d",&data);/*读取第二行,只把第三列数据赋值给一个变量*/

printf("%d",data);
return 0;
}

这样就可以实现楼主的要求
proorck6 2011-08-24
  • 打赏
  • 举报
回复

fscanf("%[^\n]",line1);//第一行
fscanf("%s %d %d",a,&b,&c);//第二行

去c中找你要的值。

69,381

社区成员

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

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