在C语言中把内容写入到文件的指定位置
比如说,我要在data.txt搜索一个名为data的字符串,并把它修改为_data,如何实现这样?data.txt文件的内容如下:oh,hello!pleasecanyo...
比如说,我要在data.txt搜索一个名为data的字符串,并把它修改为_data,如何实现这样?
data.txt文件的内容如下:
oh, hello!
please can you save this data?
you!
如何把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;
}
展开全部
#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<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;
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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);
}
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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
厉害
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询