在C语言中把内容写入到文件的指定位置

比如说,我要在data.txt搜索一个名为data的字符串,并把它修改为_data,如何实现这样?

data.txt文件的内容如下:
oh, hello!
please can you save this data?
you!

如何把data改成_data?

  可以使用fseek()来指定文件位置。


  函数原型:int fseek(FILE *stream, long offset, int fromwhere);

  函数说明:函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere(偏移起始位置:文件头0(SEEK_SET),当前位置1(SEEK_CUR),文件尾2(SEEK_END))为基准,偏移offset(指针偏移量)个字节的位置。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置。

  返回值:如果执行成功,stream将指向以fromwhere为基准,偏移offset(指针偏移量)个字节的位置,函数返回0。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置,函数返回一个非0值。


  示例:向test.txt的末尾添加“this is a text"的字符串。

   #include <stdio.h>
  #include <string.h>
  int main()
  {
  const char * szwrite = " this is a text";
  FILE *fp = fopen("test.txt", "a+");
  if (fp==0) {
  printf("can't open file\n");
  return 0;
  }
  fseek(fp, 0,SEEK_END);
  fwrite(szwrite, strlen(szwrite) * sizeof(char), 1, fp);
  fclose(fp);
  return 0;
  }
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-03-17
#include"stdio.h"
#include<string.h>
int alpa(char x)
{
return x>='a'&&x<='z'||x>='A'&&x<='Z';

}
int main()
{
char s[1000],tmp[100];
int i,j;
freopen("C:\\data.txt","r",stdin);
freopen("C:\\data1.txt","w",stdout);
while(gets(s))
{
for(i=0;s[i];i++)
{
if(alpa(s[i])&&(i==0||!alpa(s[i-1])))
{
j=0;
while(s[i]&&alpa(s[i]))
{
tmp[j++]=s[i];
i++;
}
i--;
tmp[j]=0;
if(strcmp("data",tmp)==0)
{
printf("_%s",tmp);
}
else printf("%s",tmp);
}
else putchar(s[i]);
}
puts("");
}
return 0;
}追问

我是要嵌在程序里面,你能提供单独的代码给我吗?万分感激!

追答

是写成函数吗?
#include"stdio.h"
#include
int alpa(char x)
{
return x>='a'&&x='A'&&x<='Z';

}
int runme()//调用这个函数就行了
{
char s[1000],tmp[100];
int i,j;
freopen("C:\\data.txt","r",stdin);
freopen("C:\\data1.txt","w",stdout);
while(gets(s))
{
for(i=0;s[i];i++)
{
if(alpa(s[i])&&(i==0||!alpa(s[i-1])))
{
j=0;
while(s[i]&&alpa(s[i]))
{
tmp[j++]=s[i];
i++;
}
i--;
tmp[j]=0;
if(strcmp("data",tmp)==0)
{
printf("_%s",tmp);
}
else printf("%s",tmp);
}
else putchar(s[i]);
}
puts("");
}
return 0;
}

追问

谢谢,不过我要尝试了之后才能给你分,望谅解!

本回答被提问者和网友采纳
第2个回答  2012-03-17
#include <stdio.h>
void main()
{
FILE *fp;
FILE *fptmp=tmpfile();
char c;
if(fp=fopen("data.txt","r+"))
{
int flag=0;
while(c=fgetc(fp),c!=EOF)
{
if(c=='d') flag=1;
else if(c=='a' && flag==1) flag=2;
else if(c=='t' && flag==2) flag=3;
else if(c=='a' && flag==3) flag=4;
else flag=0;
fputc(c,fptmp);
if(flag==4)
{
fseek(fptmp,-4,SEEK_CUR);//
fputs("_data",fptmp);
}
}
fseek(fptmp,0,SEEK_SET);
fseek(fp,0,SEEK_SET);
while(c=fgetc(fptmp),c!=EOF)
fputc(c,fp);
}
fclose(fp);
}
第3个回答  2012-03-17
厉害

C语言如何将一行文本插入到文本文档的特定一行
include <stdio.h>#include <stdlib.h>#include <string.h>#include <conio.h>#include <Windows.h>\/* 读出文件放到数组中,新增数据插入到该数组中; 重新将数组中的数据写入该文件中*\/void main(int argc,char * agrv){ FILE *fp; char name[20]; \/\/输入变量 int sum; ...

c语言怎么保存文件到指定的路径?
fp=fopen(filename,"wb");\\x0d\\x0a里的filename就表示了文件的路径及文件名,所以要把输入的文件名和文件路径拼接起来,计算出这个filename\\x0d\\x0a最好过滤一下别让路径和文件名中有非法字符,比如:\\\/+什么的。\\x0d\\x0ascanf也限制一下长度。\\x0d\\x0ascanf("%19s",filename);\\x0...

C语言中要在某个文件中追加内容怎么实现
如果是源文件就有内容,要配合fseek()用,先将文件指针指向文件末(‘你好’后),再用fopen()打开,参数用a+.如果没有内容,向文件写时候就可以a+,但是下次打开时,文件指针在文件的开头。你先试试。还用我建议你不要这么做,文件指针很容易出错,也不好操作,可以直接用操作文件的基本几个步骤做...

C语言如何在在指定位置加入内容!?
你是没有办法直接在文件中插入一个内容的,只能从位置6处开始,先把6后面的内容都读出来,然后写入7,然后再把之前读出来的内容写入。看我下面的代码。 总结,要在文件中位置N处插入内容,必须先把N以后的内容都读出来,然后再写入要插入的内容,然后再把之前读出的内容写入文件。include <stdio.h> ...

用c语言如何把文件复制到指定文件夹
不妨可以定义一个指针 比如char *p="";scanf("%s",p);fp=fopen(p,"r");这样就可以通过scanf自己输路径了 思路就是fp=fopen("abc.txt","r");等价于char *p="abc.txt";fp=fopen(p,"r");里面可能还有些技术上的问题,稍加修改一下,应该没问题吧 ...

C语言创建文件到指定文件夹
源代码如下:include "stdio.h"include "conio.h"include "dir.h"int main(){ int status;status=0;status=mkdir("D:\\mydir");printf("status=%d",status);getch();return 1;}

C语言怎么写数据到文件指定位置?(覆盖原有数据)
举个例子吧 我在网吧没发给你打代码 一个文本里面存着 "123456"一句话 你想把它从3以后改成"abc" 就是"123abc"首先要读入这个文件然后把123存到一个数组中然后将123与abc相连接(这个你总会了吧)最后将这个字符串在写出 就搞定了 ...

C语言编的程序怎么保存到指定文件夹?谢谢```
fopen=("c:xx.txt","a+")不知道你说的什么意思,不过如果是打开文件然后写的话 把fopen后面的两个参数写上就ok 了.第一个是文件路径 底二个是打开方式,我用的是追加写,就是如果没有文件就新建一个,有就写在文件尾

求助C语言 文件在任意位置写入数据
*stream, long offset, int fromwhere);函数可以将文件指针指到任意位置,然后再进行文件操作读写就可以了 是只能覆盖,不能在文件中间插入数据的。如果非要这样实现,那么只有自己将插入点之后的数据保存起来,先覆盖原有数据,再将保存的数据追加到最后。你的串号我已经记下,采纳后我会帮你制作 ...

如何把c语言中输出的数据保存到一个文件夹中?
1、首先,可以先查看整体代码,了解保存整体框架。2、然后,定义一个文件指针,指向文件。3、接下来就可以先对控制台清屏幕。4、此时,就可以开始使用保存的命令语句。5、还能对屏幕适当的等待。6、最后记得关闭文件的打开。7、打开保存为这个页面,并选择好路径。8、然后点击保存类型。9、然后找到文件名...

相似回答