C语言中字符串的查找与替换 c语言文件中字符串的查找与替换问题

C\u8bed\u8a00\u6587\u672c\u6587\u4ef6\u4e2d\u5b57\u7b26\u4e32\u7684\u67e5\u627e\u4e0e\u66ff\u6362\u3002

#include #include #include int main(){char filename[10],string1[15],string2[15],line[100]; FILE *pfile=NULL;scanf("%s %s %s",filename,string1,string2); pfile=fopen(filename,"r+");if(!pfile){ perror("\u6587\u4ef6\u4e0d\u5b58\u5728"); return 1; } printf("\u5c06\u628a\u6587\u4ef6%s\u4e2d\u5b57\u7b26\u4e32%s\u66ff\u6362\u6210%s\n",filename,string1,string2); while(!feof(pfile)){ char *index=NULL; fgets(line,100,pfile); index=strstr(line,string1); if(index) { int d2=strlen(string2); int d1=strlen(string1); printf("%s \u4e2d\u6709%s\n",line,string1); if(d1!=d2) { memmove( index+d1+d2-d1, index+d1, strlen(line)); } memcpy(index,string2,strlen(string2)); fseek(pfile,-strlen(line)+d2-d1,SEEK_CUR); fputs(line,pfile); fflush(pfile); }} fclose(pfile); return 0;}

\u697c\u4e3b\uff0c\u8fd9\u79cd\u7b97\u6cd5\u4e0d\u591f\u7f1c\u5bc6\uff0c
\u5982\u679c\u6587\u4ef6\u662f\uff1a
11123aa112aa
\u4f60\u8981\u67e5\u627e\u7684\u662f112\u7684\u8bdd\uff0c\u5c31\u4f1a\u6f0f\u4e86\u524d\u9762\u7684\u4e00\u4e2a112\u4e86\u3002
\u5b57\u7b26\u4e32\u5339\u914d\u5efa\u8bae\u91c7\u7528
KMP\u7b97\u6cd5\u3002

#include <stdio.h>
#include <stdlib.h>

#define SIZE 20 /* 查找单词字符和输入替换单词少于20 */
#define MAXLEN 10000 /* 文章字符不大于10000 */

void main(void)
{
int i, j;
int flag; /* 用于标记匹配单词 */
int countFlag; /* 用于检查匹配计数 */
int countOne = 0; /* 记录未改文章字符个数 */
int countTwo = 0; /* 记录改后文章字符个数 */

char keyWords[SIZE]; /* 查找单词 */
char copyWords[SIZE];/* 替换单词 */
char strOne[MAXLEN]; /* 将未改文章的所有字符储存在里面 */
char strTwo[MAXLEN]; /* 将改后文章的所有字符储存在里面 */

FILE *fp;

printf("请输入要查找的单词: ");
gets(keyWords);

printf("请输入要替换的单词: ");
gets(copyWords);

if (NULL == (fp = fopen("Englishnet.txt", "rw")))/* 读文件 */
{
printf("文件打开失败!\n");
exit(1);
}

while (!feof(fp))/* 读文件 */
{
strOne[countOne++] = fgetc(fp);
}

countOne--;/* 减去最后一个文件结束字符 */

for (i=0; i<countOne; i++)
{
if (keyWords[0] == strOne[i])/* 判断查找单词第一个字符是否匹配 */
{
if ((' ' == strOne[i-1]) || ('\n' == strOne[i-1]) || (0 == i))/* 1.检查单词前的一个字符 */
{
flag = 1;
countFlag = i + 1;

for (j=1; keyWords[j]!='\0'; j++)
{
if (keyWords[j] != strOne[countFlag++])/* 是否匹配 */
{
flag = 0;
break;
}
}

if ((' ' == strOne[countFlag]) ||
('\n' == strOne[countFlag]) ||
(EOF == strOne[countFlag]))/* 2.检查单词后的一个字符 */
{
if (1 == flag)/* 若匹配,则进行拷贝 */
{
i = countFlag-1;
for (j=0; copyWords[j]!='\0'; j++)
{
strTwo[countTwo++] = copyWords[j];
}
}
}
else/* 另外 */
{
strTwo[countTwo++] = strOne[i];
}
}
else/* 另外 */
{
strTwo[countTwo++] = strOne[i];
}
}
else/* 另外 */
{
strTwo[countTwo++] = strOne[i];
}
}
fclose(fp);

if (NULL == (fp = fopen("Englishnet.txt", "w")))/* 写入文件 */
{
printf("文件打开失败!\n");
exit(1);
}

for (i=0; i<countTwo; i++)/* 写入文件 */
{
fputc(strTwo[i], fp);
}
fclose(fp);
}

请注意,在不同的运行软件中读取文件的语法有所不同,不同的就在于fopen 后面的“w” “r”有的软件支持”w+“ ”r+“,注意区分!

#include<iostream>
#include<conio.h>
#include<string>
#include<stdlib.h>
using namespace std;

int Count=0;

/*
*函数名:findNum
*作者:anglecloudy
*描述:如果存在则返回字符串所在的位置,否则返回0,暂不支持文本中存在多个相同的串
* 先用test.txt文本测试,所有的文本操作都是一样的,不管你怎么命名
*/
int findNum(char *str)
{
FILE *p;
if((p=fopen("test.txt","rb"))==NULL)
{
printf("\n打开文件失败\n");
return 0;
}
char buffer[0x1000]; //保存文件
memset(buffer,0,0x1000); //初始化缓存
size_t fileLen=fread(buffer,sizeof(char),0x1000,p); //得到文件内容,
int readLen=strlen(str);
int IsFind=0;

for(int i=0;i<fileLen;i++)
{
if(strncmp(buffer+i,str,readLen)==0)
{
IsFind=i;
}
}

fclose(p);
return IsFind;
}

int main(void)
{
char *str1="1234567";
int t1=0,t2=0;
if((t1=findNum(str1))==0)
{
printf("没有找到字符串%s\n请按任意键退出\n",str1);
return -1;
}
else
{
printf("字符串%s的位置在%d\n",str1,t1);
}
return 0;
}

  • C璇█鏂囦欢涓瓧绗︿覆鐨勬煡鎵句笌鏇挎崲
    绛旓細pi, nLen);memcpy(po + nLen, pDst, nDstLen);// 璺宠繃琚鏇挎崲涓.pi = p + nSrcLen;// 璋冩暣鎸囧悜杈撳嚭涓茬殑鎸囬拡浣嶇疆.po = po + nLen + nDstLen;// 缁х画鏌ユ壘.p = strstr(pi, pSrc);}// 澶嶅埗鍓╀綑瀛楃涓.strcpy(po, pi);}else{// 娌℃湁鎵惧埌鍒欏師鏍峰鍒.strcpy(po, pi);}}int main...
  • C璇█濡備綍浠庡瓧绗︿覆鏁扮粍涓壘鍒颁竴涓壒瀹鐨勫瓧绗︿覆骞剁敤涓涓柊鐨勫瓧绗︿覆杩涜...
    绛旓細#include <string.h>//鍦╫rginal_str瀛楃涓蹭腑,鎵惧埌dest瀛楃涓,//鐒跺悗灏嗗畠鍚庨潰鐨勫瓧绗︿覆鏇挎崲涓簊rcvoid replace(char *orig_str, const char *dest, const char*src){ char *right_ptr = NULL ; size_t dest_len = 0 ; size_t src_len = 0 ; if( NULL == (right_ptr = strstr(orig_str,dest))...
  • C璇█,鍦ㄥ瓧绗︿覆s1涓煡鎵惧瓧绗︿覆s2,鐢ㄥ瓧绗︿覆s3鏇挎崲鎵鏈夋壘瑙佺殑s2,濡傛灉s1...
    绛旓細鎮ㄥソ锛鎮ㄥ彧瑕佷娇鐢╟ontain鍑芥暟灏卞彲浠ヤ簡锛屽畠浼氱洿鎺ユ壘鍒板瓨鍦ㄧ殑瀛楃涓銆備互鍚庢偍濡傛灉鍐嶉亣鍒扮被浼肩殑闂锛屽彲浠ユ寜鐓т笅闈㈢殑鎬濊矾鍘昏В鍐筹細1銆佸彂鐜伴棶棰:寰寰鐢熸椿鍦ㄤ笘鐣屼腑锛屾椂鏃跺埢鍒婚兘澶勫湪杩欏悇绉嶅悇鏍风殑鐭涚浘涓紝褰撴煇浜涚煕鐩炬斁鏄犲埌鎰忚瘑涓椂,涓綋鎵嶅彂鐜颁粬鏄釜闂锛屽苟瑕佹眰璁炬硶鍘昏В鍐冲畠銆傝繖灏辨槸鍙戠幇闂鐨勯樁娈点備粠闂鐨勮В鍐...
  • C璇█涓瓧绗︿覆鐨勬煡鎵句笌鏇挎崲
    绛旓細int countTwo = 0; /* 璁板綍鏀瑰悗鏂囩珷瀛楃涓暟 */ char keyWords[SIZE]; /* 鏌ユ壘鍗曡瘝 */ char copyWords[SIZE];/* 鏇挎崲鍗曡瘝 */ char strOne[MAXLEN]; /* 灏嗘湭鏀规枃绔犵殑鎵鏈夊瓧绗﹀偍瀛樺湪閲岄潰 */ char strTwo[MAXLEN]; /* 灏嗘敼鍚庢枃绔犵殑鎵鏈夊瓧绗﹀偍瀛樺湪閲岄潰 */ FILE *fp;printf("璇疯緭鍏ヨ...
  • 鍦C璇█涓瓧绗︿覆鐨勬浛鎹濡備綍瀹炵幇鐨!
    绛旓細1銆侀鍏堣緭鍏ヤ唬鐮侊細include <string.h> include <stdio.h> / 鍙傛暟锛歰riginalString[] 锛氬師濮嬪瓧绗︿覆 key[] 锛 寰鏇挎崲鐨勫瓧绗︿覆 swap[] : 鏂板瓧绗︿覆 / void replace(char originalString[], char key[], char swap[]){ int lengthOfOriginalString, lengthOfKey, lengthOfSwap, i, j , flag;char...
  • 濡備綍鐢C璇█鍦ㄦ枃浠涓煡鎵骞鏇挎崲鎸囧畾瀛楃涓?娓呴珮鎵嬫寚鐐!
    绛旓細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 ...
  • ...鏌ユ壘涓涓瓧绗︿覆鍦ㄥ彟涓涓瀛楃涓蹭腑鍑虹幇鐨娆℃暟,璋㈣阿澶у浜!
    绛旓細//绗竴绉 public static Map count(String str){ Map<String,Integer>maps=new HashMap<String,Integer>();for(int i=0;i<str.length();i++){ //鑾峰彇涓嬫爣鎵瀵瑰簲鐨勫瓧绗 String key=String.valueOf((str.charAt(i)));//鍒ゆ柇璇ュ瓧绗﹀湪map涓槸鍚﹀瓨鍦 if(!maps.containsKey(key))//濡傛灉涓嶅瓨鍦...
  • C璇█濡備綍浠庡瓧绗︿覆鏁扮粍涓壘鍒颁竴涓壒瀹鐨勫瓧绗︿覆骞剁敤涓涓柊鐨勫瓧绗︿覆杩涜...
    绛旓細include <string.h> /*瑕佺敤100涓1瀛楃鏉鏇挎崲11.1,閭d箞xeb[]涓嶄竴瀹氳繕鑳借寰椾笅锛涗綍鍐佃繕鏈塪[100000],閭i噷闈㈠彲涓嶄竴瀹氭槸44.4鍝︼紟琚浛鎹㈢殑鐨勫瓧绗︿覆鏄互锛嗘潵缁撳熬鍚楋紵a1=,a2=杩欎簺瀛楃涓插敮涓鍚楋紵鎴栬呴粯璁11.1涓33.3涓查暱搴︽槸鐩稿悓鐨勫悧锛熺湅璧锋潵鏄殑锛屼絾浠g爜蹇呴』鐭ラ亾锛庢墍浠ヨ繖浜涢棶棰樺彧鑳借嚜宸辫В鍐筹紝鍥犱负鍒汉...
  • c璇█缂栫▼鏇挎崲鏂囦欢涓瓧绗︿覆
    绛旓細1銆佺涓姝ワ紝渚濇鍗曞嚮visual C ++ 6.0鐨勨滄枃浠垛-->鈥滄柊寤衡-->鈥滄枃浠垛-->鈥淐++ Source File鈥濋夐」锛岃涓嬪浘锛岃浆鍒颁笅闈㈢殑姝ラ銆2銆佺浜屾锛屾墽琛屽畬涓婇潰鐨勬搷浣滀箣鍚庯紝瀹氫箟鍙橀噺锛屼唬鐮佽涓嬪浘锛岃浆鍒颁笅闈㈢殑姝ラ銆3銆佺涓夋锛屾墽琛屽畬涓婇潰鐨勬搷浣滀箣鍚庯紝杈撳叆涓涓瀛楃锛屼娇鐢╣etche鍑芥暟鎺ユ敹锛屼唬鐮佽涓嬪浘锛岃浆鍒...
  • C璇█瀹炵幇鍦ㄤ竴涓瀛楃涓蹭腑鏌ユ壘鎸囧畾鐨勫瓧绗,骞惰緭鍑烘寚瀹氬瓧绗﹀湪瀛楃涓蹭腑鍑虹幇...
    绛旓細import java.util.Arrays;import java.util.Scanner;public class JudeCount{ public static void main(String[]args){ System.out.println("璇疯緭鍏ヤ綘瑕佸垽鏂鐨勫瓧绗︿覆:");Scanner s=new Scanner(System.in);String str=s.nextLine();char[]ch=str.toCharArray();Arrays.sort(ch);//瀵规暟缁勬帓搴 char...
  • 扩展阅读:c语言字符串替换a变z ... 替换字母c语言 ... c语言中字符串的输入 ... c#截取字符串中的一部分 ... c语言字符串输入替换 ... c语言字母a和z转换 ... c语言中字符串的比较 ... 截取字符串的三种方法 ... c语言截取字符串的某一段 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网