如何用C语言实现读取文件特定位置内容并输出至txt文件

这是一个10000行的txt文件,需要打印出address后面方括号里的地址内容,输出到文件中。跪谢!没有代码也行,给思路就好!

用fgets 一行行读入,读到EOF结束。
每读一行用 下面函数找到address 后面方括号 i1,i2 位置
void f1(char *str, int *i1, int *i2){
int i,j=0,L;
L = strlen(str);
if (L < 8) { printf("no address line\n"); *i1=0; *i2=0;};
for (i=0;i<L;i++){
if ( strncmp(str+i,"address",7)==0) {j=i+7; break;};
}
for (i=j;i<L;i++){
if (str[i]=='[') *i1=i;
if (str[i]==']') { *i2=i; break;}
}
}
从这行字符串中取出地址 str[i1+1] 到 str[i2-1], 写入文件。
调用例子:
main()
{
char str[400]=".......address..[123 bay street Apt. 5] abcdb ssks 567 ";
char add[80];
int i,j,i1,i2;
f1(&str[0],&i1,&i2);
printf("%d %d",i1,i2);
for (i=i1+1;i<i2;i++) { j=i-i1-1; add[j]=str[i];};
add[j+1]='\0';

printf("%s ",add);
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-21
其实,你要完成的这项工作,用shell脚本或者其他什么脚本是最方便的。
你手里现在要是有linux机,或者有其他支持sed工具的环境也行。

sed -n 's/Address//p' txt.log > result.txt

然后再用一个类似的语句,把那串数字后面的东西滤掉就行了,你要是不会整,你把文件传我,我给你整
第2个回答  推荐于2016-06-10
读文件只能从头读,如果需要读到特定的位置需要加一个判断
然后读文件
使用fopen函数,打开文件指针
使用fscanf读取文件内容
使用fprintf写入文件
具体用法跟普通的输入输出差不多