C语言中,如何在文本文件中搜索指定字符串并修改
发布网友
发布时间:2022-04-25 15:15
我来回答
共1个回答
热心网友
时间:2023-09-18 08:53
编译环境vc2005/dev-c++
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 10000 /* 设定文件最大字符个数不超过10000,可更改 */
int main()
{
int i=0,j,k=0,m=0,pos=0,max,len1,len2;
char s[N],t[N],a[200],s1[200],s2[200];
FILE *fp;
printf("Please input file name:\n");/*输入文件名*/
gets(a);
printf("Please input original string:\n");/*输入要替换的字符串*/
gets(s1);
printf("Please input new string:\n");/*输入被替换成的字符串*/
gets(s2);
len1=strlen(s1);
len2=strlen(s2);
if ((fp=fopen(a,"r"))==NULL)/*设定文件位于当前目录下,可更改为绝对路径*/
{ printf("Open file %s error! Strike any key to exit!",a);
system("pause");
exit(1);
}
s[i++]=fgetc(fp);
while(!feof(fp))
{s[i++]=fgetc(fp);<br/>}
fclose(fp);
max=i-1;/* 函数feof()最后会读两次,所以必须减1 */
for(i=0;i<max-len1;i++)
{for(j=0;j<len1&&(s[i+j]==s1[j]);j++);<br/> if(j!=len1)<br/> continue;/* 不相等则i加1进行下一次外循环 */<br/> else<br/> { for(k=0;k<i-pos;k++)/* pos记录开始复制的位置 */<br/> t[m++]=s[pos+k];<br/> pos=i+len1;<br/> for(k=0;k<len2;k++)/* 字符串替换 */<br/> t[m++]=s2[k];<br/> }
}
for(k=pos;k<max;k++)/* 复制剩余字符 */
t[m++]=s[k];
max=m;/* max是替换后文件的字符总数 */
fp=fopen(a,"w");
printf("\n\nThe results are:\n\n");
for(j=0;j<max;j++)
{putchar(t[j]); /* 结果显示到屏幕 */<br/>fputc(t[j],fp); /* 同时结果写入到当前目录下的新文件001.txt中 */<br/>}
printf("\n\n");
fclose(fp);
system("pause");
return 0;
}
C语言文本文件中字符串的查找与替换。
pfile){ perror("文件不存在"); return 1; } printf("将把文件%s中字符串%s替换成%s\n",filename,string1,string2); while(!feof(pfile)){ char *index=NULL; fgets(line,100,pfile); index=strstr(line,string1)
c语言怎么提取文本文件中我想要的一些信息?
使用文件操作函数fscanf即可提取文本当中特定的信息。例如要提取一个整数,可以用fscanf(fp,"%d",&n);要提取一个字符串可以用fscanf(fp,"%s",s),其中fp为文件指针。1、C语言标准库提供了一系列文件操作函数。文件操作函数一般以f+单词的形式来命名(f是file的简写),其声明位于stdio.h头文件当中。...
怎么用C语言读取 TXT文件中的字符串
可以使用输入输出重定向来将TXT文本中的字符内容导入程序中,或者使用标准C库函数:fopen()和fgetc();先使用fopen()函数打开TXT文本文件,然后使用fgetc读取文本文件中的字符。读取全部文本中全部字符可以使用一个while循环加判断是否读取到文件结尾来实现:char ch;while((ch= fgetc(fp)) != EOF)这样...
C语言如何查找 某字符串 在所给的文本文件中的哪一行,并输出该行...
检查字符串是否在该行中,如果在,则输出该行,关闭文件,结束。否则继续查找 strstr 循环结束,输出未找到该字符串。关闭文件。fclose 相关代码和运行效果如下图:
C语言如何在txt中读取指定字符串的下一行数据?
/*fileSave是找到合适字符串后保存文件的绝对路径*/const char *fileSave = "/home/xxx/workspace/c/aaa.text";const char *flagString = "66666";FILE *fp_src = NULL,*fp_save;char buf[MAX_NUM] = {0};bool flag = false;fp_src = fopen(fileSrc,"r");if(fp_src == NULL)...
C语言中在字符串中查找指定字符串
if (j == 2) //如果比较了三次都相等则找到一个 { index[num] = i - 2; //记录str1下标 num ++; } } else { i = i - j; //有不相等的跳出,i回到比较前的值 break; } } printf("共找到:%d个\n",num); printf("下标分别是:"); for (i = 0; i < num; i++)...
C程序,如何从指定文件中读取一个字符串?
include <stdio.h>#include <stdlib.h>int main(){FILE *fp;char cl[100];if((fp=fopen("1.txt","r"))==NULL)exit(1);while(fscanf(fp,"%s",cl)==1)printf("%s \n",cl);if(fclose(fp)!=0)exit(1);return 0;} C语言是目前世界上流行、使用最广泛的面向过程的高级程序设计...
在c语言编程中如何实现程序对文本文件中字符串进行替换及生成新的文本...
int tag[100]; //匹配关键字的字符下标,设定最多找到100个关键字 typedef struct { char data[MaxSize]; //记录字符值 int len; //保存有效字符串长度 }SqString;void MainMenu(); //显示主菜单 void Select_function(char op); //功能选择 void Display_text(); //显示本文内...
C语言如何读取文件中指定的某一段
使用fread函数读取指定长度的字符串,即使包含\n也会被读取,可以首先使用fseek定位到文件结尾,然后ftell函数返回的值就是文件的大小,这样就可以用循环多次读取文件,直到读取所有内容 FILE *file = NULL;char szFile[1025] = {0};int nHadRead = 0;file = fopen( "file.txt", "r+");if ( ...
c语言中如何从文件里读取一段字符串,至换行符
fgets读取一行,fgetc读取一个字符,fread读取你想要的长度 FILE *fp = fopen(fileName,"r");if (fp != NULL){ char buf[1024] = {0};fgets(buf,fp);} fclose(fp);