fscanf 读文件(本人对C不怎么熟悉)

xlttap 2011-04-19 04:59:20
假如我有一个文件是in.txt, 内容如下:
WO 333
MEN 222 444

CHINA 444 333 555 666 454 333 111 444
CHINA 444 333 555 666 454 333 111 444
CHINA 444 333 555 666 454 333 111 444
CHINA 444 333 555 666 454 333 111 444
CHINA 444 333 555 666 454 333 111 444
CHINA 444 333 555
WO 999
MEN 999 444

CHINA 444 333 555 666 454 333 111 444
CHINA 444 333 555 666 454 333 111 444
CHINA 444 333 555 666 454 333 111 444
CHINA 444 333 555 666 454 333 111 444
CHINA 444 333 555 666 454 333 111 444
CHINA 444 333 555

请问用fscanf怎么读? 并且把第5列,即666的值改成777呢?
请高手指点一二。
...全文
144 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
AnYidan 2011-04-20
  • 打赏
  • 举报
回复
打开文件并判断
int open(char *name, int flags, int perms);

如果你了解要改内容的位置
long lseek(int fd, long offset, int origin);

读取,修改,回存,

当然有不同的方法,如果安全性比较高,建议按行读取原文件,存入新文件,完成后删除原文件,改名新文件

网上有大量的帖子
赵4老师 2011-04-20
  • 打赏
  • 举报
回复

WO 333 6+2
MEN 222 444 11+2
2
CHINA 444 333 555 666 454 333 111 444 18+3+16+2
CHINA 444 333 555 666 454 333 111 444 18+3+16+2
CHINA 444 333 555 666 454 333 111 444 18+3+16+2
CHINA 444 333 555 666 454 333 111 444 18+3+16+2
CHINA 444 333 555 666 454 333 111 444 18+3+16+2
CHINA 444 333 555 17+2
WO 999 6+2
MEN 999 444 11+2
2
CHINA 444 333 555 666 454 333 111 444 18+3+16+2
CHINA 444 333 555 666 454 333 111 444 18+3+16+2
CHINA 444 333 555 666 454 333 111 444 18+3+16+2
CHINA 444 333 555 666 454 333 111 444 18+3+16+2
CHINA 444 333 555 666 454 333 111 444 18+3+16+2
CHINA 444 333 555 17+2

#include <stdio.h>
FILE *f;
int i;
void main() {
f=fopen("in.txt","rb+");
for (i=0;i<5;i++) {
fseek(f,6+2+11+2+2+18+i*(3+16+2+18),SEEK_SET);
fwrite("777",1,3,f);
}
for (i=0;i<5;i++) {
fseek(f,6+2+11+2+2+5*(18+3+16+2)+17+2+6+2+11+2+2+18+i*(3+16+2+18),SEEK_SET);
fwrite("777",1,3,f);
}
fclose(f);
}

xlttap 2011-04-20
  • 打赏
  • 举报
回复
唉。。。
都没明白我的意思。
要是读一行再处理,我就不用发贴了。
算了,结了。
影游 2011-04-19
  • 打赏
  • 举报
回复
不太懂看看能不能按行读取!
getline()函数 ,你试试……
hdxu8511 2011-04-19
  • 打赏
  • 举报
回复
我的想法是把txt文件读入,并且做一个判别如果666就改为777,最后再把数据写出到txt文件中。
cao_julians 2011-04-19
  • 打赏
  • 举报
回复
就象用scanf从键盘上读一样,对应每一行的内容写一个fscanf(pf,"",charbuffer,&x,...)
如最长的行你可以
fscanf(pf,"%5s",charbuffer);/*读CHIAN*/
for(i=0; i<8; i++)
{
fscanf(pf,"%d",&x[i]);/*循环读8个数据*/
}
screwzm 2011-04-19
  • 打赏
  • 举报
回复
fopen();
while(!feof())
{
fgets();
/*进行相应的处理*/
fprintf();//存入新文件
}

69,371

社区成员

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

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