www.tjgcgs88.cn-狠狠久久亚洲欧美专区不卡,久久精品国产99久久无毒不卡,噼里啪啦国语版在线观看,zσzσzσ女人极品另类

  • <strike id="qgi8o"><td id="qgi8o"></td></strike>
  • <ul id="qgi8o"><acronym id="qgi8o"></acronym></ul>
  • <li id="qgi8o"></li>
    <ul id="qgi8o"></ul>
    <strike id="qgi8o"><rt id="qgi8o"></rt></strike>
    <ul id="qgi8o"><center id="qgi8o"></center></ul>
  • <kbd id="qgi8o"></kbd>

    C語言文件中字符串的查找與替換 C語言文本文件中字符串的查找與替換。

      #include<stdio.h>
      #include<conio.h>
      #include<string.h>
      #include<stdlib.h>
      void Substitute(char *pInput, char *pOutput, char *pSrc, char *pDst)
      {
      char    *pi, *po, *p;
      int     nSrcLen, nDstLen, nLen;
      // 指向輸入字符串的游動(dòng)指針.
      pi = pInput;
      // 指向輸出字符串的游動(dòng)指針.
      po = pOutput;
      // 計(jì)算被替換串和替換串的長(zhǎng)度.
      nSrcLen = strlen(pSrc);
      nDstLen = strlen(pDst);
      // 查找pi指向字符串中第一次出現(xiàn)替換串的位置,并返回指針(找不到則返回null).
      p = strstr(pi, pSrc);
      if(p)
      {
      // 找到.
      while(p)
      {
      //計(jì)算被替換串前邊字符串的長(zhǎng)度.
      nLen = (int)(p - pi);
      // 復(fù)制到輸出字符串.
      memcpy(po, pi, nLen);
      memcpy(po + nLen, pDst, nDstLen);
      // 跳過被替換串.
      pi = p + nSrcLen;
      // 調(diào)整指向輸出串的指針位置.
      po = po + nLen + nDstLen;
      // 繼續(xù)查找.
      p = strstr(pi, pSrc);
      }
      // 復(fù)制剩余字符串.
      strcpy(po, pi);
      }
      else
      {
      // 沒有找到則原樣復(fù)制.
      strcpy(po, pi);
      }
      }
      int main(int ac, char *av[])
      {
      if (ac!=5) {
      printf("程序名 要操作的文件 新文件 查找的字符串 替換的字符串
    ");
      printf("示例:test.exe 1.txt 2.txt hello love
    ");
      return 0;
      }
      const int MAXSIZES = 100;
      FILE *fpSrc,*fpDes;
      char filename1[20]="1.txt";
      char filename2[20]="2.txt";
      //要求查找的字符串,替換的字符串;
      char ps[]="hello";
      char pd[]="love";
      //求取所查找和替換的字符串的長(zhǎng)度;
      int len_src=strlen(av[3]);
      int len_des=strlen(av[4]);
      //定義存儲(chǔ)字符串緩沖區(qū);很奇怪的一點(diǎn)是,fgets函數(shù)不能將字符串寫入動(dòng)態(tài)分配的內(nèi)存中
      /*char* Src_buf=(char*)(sizeof(char)*MAXSIZES);
      char* Cpy_buf=(char*)(sizeof(char)*MAXSIZES);
      char* Des_buf=(char*)(sizeof(char)*MAXSIZES);*/
      char Src_buf[MAXSIZES] = {0};
      char Cpy_buf[MAXSIZES] = {0};
      char Des_buf[MAXSIZES] = {0};
      //打開文件
      if((fpSrc=fopen(av[1],"r+"))==NULL)
      {
      printf("fail to open the file1 !
    ");
      exit(1);
      }
      if((fpDes=fopen(av[2],"a+"))==NULL)
      {
      printf("fail to open the file2 !
    ");
      exit(1);
      }
      //進(jìn)行循環(huán)讀取
      while(!feof(fpSrc))//判斷文件是否已結(jié)束;!feof(fpSrc)
      {
      fgets(Src_buf,MAXSIZES,fpSrc);
      Substitute(Src_buf,Des_buf,av[3],av[4]);
      fputs(Des_buf,fpDes);
      printf("%s",Des_buf);
      }
      fclose(fpSrc);
      fclose(fpDes);
      system("pause");
      return 0;
      }

    說明:使用c標(biāo)準(zhǔn)為中的文件I/O函數(shù)一般是不推薦的,做為練習(xí)可以學(xué)習(xí),真正用的最多的是內(nèi)存文件映射。那要比用I/O函數(shù)讀來讀取方便的多,限制也會(huì)更小。

    用"rb" open, 用 fread 讀, 用 fwrite 寫.
    記錄地點(diǎn) 用 fgetpos.

    下面程序例子是按你的原來題意,找目標(biāo)字串,輸出用替代字.直接用文件操作,不開單元存放文件.

    輸入文件 a.txt 輸出文件 tmp.txt

    至于你的新要求,給你提示記錄地點(diǎn)的方法.你可以rewind(fin),從頭一個(gè)字一個(gè)字讀,讀一個(gè)輸出一個(gè),讀到的位置等于POS[i]-80時(shí),讀80個(gè)字但不輸出,這就去掉了80個(gè)字.
    例如找到的POS[]共NN個(gè)。
    #define buff_size 1024
    long int n,n1,n2,i,j,k;
    char *buff;
    buff=(char*) malloc(buff_size * sizeof(char));
    rewind(fin);
    for(k=0;k<NN;k++){
    if (k==0) {n=POS[k]-80;} else {n=POS[k]-POS[k-1]-80;};
    n1 = n / buff_size; n2 = n % buff_size;
    if (n1 >0) for (i=0;i<n1;i++){
    fread(buff,sizeof(char),buff_size,fin);
    fwrite(buff,sizeof(char),buff_size,fout);
    };
    if (n2 > 0) {fread(buff,sizeof(char),n2,fin);
    fwrite(buff,sizeof(char),n2,fout);
    };
    fread(buff,sizeof(char),80,fin);
    for (i=0;i<80;i++) buff[i]='0'; buff[80]='\0';
    fwrite(buff,sizeof(char),80,fout);
    } ; end for k
    這里請(qǐng)自己寫 讀最后一段,無需改零,讀一個(gè)字,輸出一個(gè)字,直到EOF.
    -----------------
    #include <stdio.h>
    #include <stdlib.h>

    void main (int argc, char *argv[])
    {
    FILE *fin,*fout;
    char namein[72]="a.txt";
    char nameout[72]="tmp.txt";
    char target[120],tidai[120];
    char work[120];
    int L1,L2,i,k=0;
    int numread;
    fpos_t pos;
    fpos_t POS[100];

    printf("Enter target string: ");
    scanf("%s",&target[0]);
    L1 = strlen(target);
    printf("Enter replace string: ");
    scanf("%s",&tidai[0]);
    L2 = strlen(tidai);

    if ( (fin = fopen(namein,"rb") ) == NULL ) {
    printf("\007Cann't open input file: %s ", namein);exit(1);
    };

    if ( (fout = fopen(nameout,"wb") ) == NULL ) {
    printf("\007Cann't open temp work file: %s ", nameout);exit(1);
    };

    Lab1:
    numread = fread( work, sizeof( char ), L1, fin );
    if (numread < L1) {
    // fwrite( work, sizeof( char ), numread, fout );
    goto done;
    };
    if ( strncmp(work,target,L1) == 0 ){
    // fwrite( tidai, sizeof( char ), L2, fout );
    if( fgetpos( fin, &pos ) != 0 ) perror( "fgetpos error" );
    else { POS[k] = pos-L1; k=k+1;};

    goto Lab1;
    };

    Lab2:
    // fwrite( &work[0], sizeof( char ), 1, fout );
    for (i=0;i<L1-1;i++) work[i]=work[i+1];
    fread( &work[L1-1], sizeof( char ), 1, fin );
    if (feof(fin)) {
    // fwrite( &work[1], sizeof( char ), L1-1, fout );
    goto done;
    };
    if ( strncmp(work,target,L1) == 0 ){
    // fwrite( tidai, sizeof( char ), L2, fout );
    if( fgetpos( fin, &pos ) != 0 ) perror( "fgetpos error" );
    else { POS[k] = pos-L1; k=k+1;};
    goto Lab1;
    } else {goto Lab2;};

    // 新述 rewind(fin); 那部分程序語句插在這里,聲明放前面

    done: fclose(fin);fclose(fout);
    printf("output in %s\n",nameout);
    for (i=0;i<k;i++){
    printf("%ld \n",(long int) POS[i]);
    }
    exit(0);
    }

    你可以這樣寫,void replace() /*替換單詞*/
    {
    char word[max],reword[max],ch;/*word 為被替換單詞,reword為替換單詞*/
    printf("\n======單詞替換======\n");
    printf("\n請(qǐng)輸入欲被替換的單詞:");
    scanf("%s",&word);
    printf("\n共找到%2d 處 ” %s ” \n",wordfind(word),word);
    if (!wordfind(word))
    {
    printf("\n對(duì)不起!不存在該單詞!");
    getchar();
    }
    else
    {
    printf("\n該單詞替換為:");
    scanf("%s",&reword);
    printf("\n確定是否要替換為 “ %s ”?(Y/N) : ",reword);
    getchar();
    scanf("%c",&ch);
    if (ch=='y'||ch=='Y')
    if (!revisal(pos,strlen(word),reword))
    printf("\n修改成功!");
    }
    }

    int wordfind(char word[]) /*單詞匹配*/
    {
    int i=0,s=0,j,k,len,count=0;
    char str[max];
    len=strlen(psg);
    while (i<len) /*尋找單詞*/
    {
    if ((psg[i]>='a'&&psg[i]<='z')||(psg[i]>='A'&&psg[i]<='Z'))
    {
    k=0;
    for (j=i;j<len;j++)
    {
    if ((psg[j]>='a'&&psg[j]<='z')||(psg[j]>='A'&&psg[j]<='Z'))
    {
    str[k]=psg[j]; /*str記錄文段中出現(xiàn)的單詞*/
    k++;
    }
    else
    {
    i=j+1;
    break;
    }
    }
    if (!strcmp(str,word)) /*對(duì)文段中單詞和欲替換單詞比較*/
    {
    count++; /*若相同,則統(tǒng)計(jì)該單詞并記錄其起始位置*/
    pos[s]=i-k-1;
    s++;
    }
    for (j=0;j<k;j++)
    str[j]='\0'; /*初始化字符串str*/
    }
    else
    i++;
    }
    return count;
    }

    int revisal(int pos[],int len,char reword[]) /*替換后修改文件*/
    {
    int i=0,j=0,k;
    if ((fp=fopen(filename,"w"))==NULL) /*打開文件*/
    {
    printf("文件打開失敗!");
    exit(0);
    }
    while (i<strlen(psg))
    {
    if (pos[j]==i) /*在文件中修改替換單詞*/
    {
    for (k=0;k<strlen(reword);k++)
    fwrite(&reword[k],sizeof(char),1,fp);
    i+=len; /*在psg數(shù)組中跳過被替換單詞*/
    j++;
    }
    else
    {
    fwrite(&psg[i],sizeof(char),1,fp);
    i++;
    }
    }
    if (fclose(fp)) /*關(guān)閉文件*/
    {
    printf("關(guān)閉文件失敗");
    exit(0);
    }
    getchar();
    return 0;
    }

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

    int Count=0;

    /*
    *函數(shù)名:findNum
    *作者:anglecloudy
    *描述:如果存在則返回字符串所在的位置,否則返回0,暫不支持文本中存在多個(gè)相同的串
    * 先用test.txt文本測(cè)試,所有的文本操作都是一樣的,不管你怎么命名
    */
    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); //得到文件內(nèi)容,
    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請(qǐng)按任意鍵退出\n",str1);
    return -1;
    }
    else
    {
    printf("字符串%s的位置在%d\n",str1,t1);
    }
    return 0;
    }

    我只是簡(jiǎn)單的改了一下你的字符串查找這個(gè)函數(shù),其它的沒寫。主要是你的思想不對(duì),對(duì)文件的操作一般先定義一個(gè)數(shù)組,把文件保存起來,然后再操作,多去http://community.csdn.net上面問問,高手多,下班了。88

    給些建議:
    1.你需要替換的文件是否很大,如果不大(不超過10M),一次讀完它,別一個(gè)字節(jié)一個(gè)字節(jié)讀,自己給自己找麻煩。(獲取文件大小/c里面可以用fseek+ftell獲取,然后malloc對(duì)應(yīng)大小的空間,一次fread讀完。)
    理由:你這個(gè)不是要長(zhǎng)時(shí)間運(yùn)行的系統(tǒng),不用考慮內(nèi)存占用,因?yàn)榕芡昃徒Y(jié)束了。

    2.如果都在內(nèi)存里了,直接可以用庫函數(shù)strstr來查找,比你自己比較方便許多,代碼也沒這么復(fù)雜。

    用C語言實(shí)現(xiàn) 原字符串中指定的子串的的查找與替換代碼?注:一定要有...
    如今擱假了,整天呆正在野里,非常無談。裝上闊帶又有什么用。實(shí)緬懷以前讀書的時(shí)分。和同窗有道有笑。上課時(shí)分道悄然話。可是人念,等到上高中了,我能夠又勤得讀書了。我那己,便那樣。我念我能夠是個(gè)比擬喜歡完好的己。能夠做到完善的事,煙筒拆除,我必定當(dāng)真做。有些許殘缺,本人會(huì)不稱心。然后...

    C 語言從文件(.bin或.txt)中查找字符串,要求不能用fgets,謝謝!_百度...
    這個(gè)程序會(huì)把所有含有目標(biāo)字符串的行打印出來。用法是先把代碼存入到my_search.c中,再編譯成my_search.exe, 然后在控制臺(tái)輸入my_search.exe 文件名 字符串 比如輸入my_search.exe my_search.c char 會(huì)顯示:char *char *buffer;char *tmp;int read_chars = 0;char *line = malloc(bufsize);...

    用c語言在一個(gè)字符串中查找另一個(gè)字符串,并統(tǒng)計(jì)個(gè)數(shù)
    例如,asdfgasfgasf,as,則輸出3。#include<stdio.h> #include<stdlib.h> intmain(){ charS[100],T[20];charch1,ch2;printf("請(qǐng)輸入主字符串:\n");ch1=getchar();inti=0;while(ch1!='\n'){ S[i]=ch1;i++;ch1=getchar();} printf("請(qǐng)...

    C語言中在字符串中查找指定字符串拜托各位大神
    int str_cmp(int n,char*a,char *b) {int i; for(i=0;i<n;i++) if(a[i]!=b[i]) return 0; return 1; } void f(int n,char *a,char *b) {int i,j; for(i=n;i<strlen(a);i++) {char m[100]; for(j=0;j<=i;j++) m[j]=a[j]; m[j]=0; strcat(m,...

    c語言如何查找字符串?
    C語言中的標(biāo)準(zhǔn)函數(shù)庫中的strchr()函數(shù)可以實(shí)現(xiàn)查找字符串中的某個(gè)字符。C語言strchr()函數(shù):查找某字符在字符串中首次出現(xiàn)的位置 頭文件:#include <string.h> strchr() 用來查找某字符在字符串中首次出現(xiàn)的位置,其原型為:char * strchr (const char *str, int c);【參數(shù)】str 為要查找的字...

    java怎么替換字符串某個(gè)字符
    在Java編程語言中,替換字符串中的某個(gè)字符是一項(xiàng)常見的需求。我們可以通過多種方法實(shí)現(xiàn)這一目標(biāo),具體取決于替換需求的復(fù)雜性和精確度。首先,讓我們了解一下replace方法。這個(gè)方法能夠?qū)⒆址兴兄付ǖ淖址鎿Q成另一個(gè)指定的字符,并返回一個(gè)新的字符串。值得注意的是,這個(gè)方法不會(huì)修改原始字符串,...

    replace函數(shù)的用法
    可以使用str.replace方法來替換字符串中的內(nèi)容;而在JavaScript中,則可以使用String.prototype.replace方法。因此,在使用replace函數(shù)時(shí),需要參考具體編程語言的文檔和規(guī)范。總體來說,replace函數(shù)是一個(gè)強(qiáng)大的工具,用于在字符串中查找并替換特定的內(nèi)容,在文本處理和字符串操作中有著廣泛的應(yīng)用。

    c語言中從文件中按行讀取字符串,并進(jìn)行相應(yīng)操作。
    include "stdafx.h"include "stdio.h"define ColNum 4 \/\/總列數(shù) define QCIndex (1-1)\/\/去重列號(hào) define PXIndex (3-1)\/\/排序列號(hào) typedef struct txtnode{ struct txtnode next;char col[ColNum];} TXTNODE;void CopyToNode(TXTNODE*node,char buf){ if(!buf||!*buf)return;int j,...

    replace函數(shù)怎么用
    Replace函數(shù)的使用方法 Replace函數(shù)主要用于替換文本字符串中的特定內(nèi)容。其基本語法如下:Replace 詳細(xì)解釋:1. 函數(shù)定義與位置:Replace函數(shù)通常在編程語言的字符串處理模塊中。它的主要功能是查找文本中的特定子字符串并替換為另一個(gè)子字符串。2. 參數(shù)說明:第一個(gè)參數(shù)是“原始文本”,即需要...

    c語言中如何從一個(gè)字符串中查詢是否有給定的關(guān)鍵詞!
    c語言中查詢字符串是否包含特定關(guān)鍵詞,可以使用string.h頭文件中的strstr函數(shù)。該函數(shù)原型為:char* strstr(char* src, char* find)。函數(shù)的功能是從src字符串中查找find第一次出現(xiàn)的位置,不比較結(jié)束符NULL。如果find在src中找到,函數(shù)返回指向src中find第一次出現(xiàn)位置的指針;如果未找到,則返回NULL...

    相關(guān)評(píng)說:

  • 陸飾13723865360: 如何用c語言編程實(shí)現(xiàn)txt文件中的查找與替換功能?希望能有完整過程 -
    響水縣不平: ______ #include#include//By cockhorseman QQ:1004828288void main(){ FILE *p; char a[200],c,b,i; if((p=fopen("zifu","r"))==0)//打開文件 {printf("文件打開失敗!\n");}else{fscanf(p,"%s",a);printf("你要替換的字符\n");c=getchar();getchar(...
  • 陸飾13723865360: 求解數(shù)據(jù)結(jié)構(gòu):串的查找和替換(C語言) -
    響水縣不平: ______ ; j++) { if (keyWords[j] : "); gets(copyWords),則進(jìn)行拷貝 */ { i = countFlag-1; int flag; /* 用于標(biāo)記匹配單詞 */ keyWords[j]!='\ i++) { if (keyWords[0] == strOne[i])/* 判斷查找單詞第一個(gè)字符是否匹配 */ { if ((' ' == strOne[i-1]) || ('\ / char strTwo[...
  • 陸飾13723865360: c語言文件中字符串的查找與替換問題 -
    響水縣不平: ______ return -1,都是一些細(xì)節(jié);n&quot,out); exit(2);0' #include&lt!i) return 0;沒有找到字符串%s\ } i++; else fputc(ch. 已經(jīng)編譯運(yùn)行確認(rèn); / int findNum(char *str) { int i=0; char ch; } } fclose(in); } if((t2=findNum(str2))==0) { printf(":) #include< break,*out...
  • 陸飾13723865360: C語言查找字符并替換字符 分全部送上了~~~~~
    響水縣不平: ______ 我有個(gè)程序,大概也是這樣的功能!你自己看下,或許對(duì)你有幫助!VC++寫的~! #include &lt;iostream&gt; using namespace std; #include &lt;fstream&gt; int main() { ifstream infile1("1.txt",ios::in); if (!infile1) { cerr&lt;&lt;"open error!"&lt;&lt;...
  • 陸飾13723865360: c語言:字符串替換 -
    響水縣不平: ______ c語言實(shí)現(xiàn)字符串替換函數(shù): #include #include #include #include //字符串替換函數(shù) /******************************************************************** * function: my_strstr() * description: 在一個(gè)字符串中查找一個(gè)子串; * input: ps: 源; pd:子串 * ...
  • 陸飾13723865360: 怎樣用C語言實(shí)現(xiàn)字符串的查找?
    響水縣不平: ______ 如在一個(gè)字符串str[]="hello world!hello world!hello world!you are great!"中查找第三個(gè)“world”.并標(biāo)明位置: char str[]="hello world!hello world!hello world!you are great!"; char *strTemp = str; while(1) { strTemp = strstr(strTemp,"hello world...
  • 陸飾13723865360: c語言編程:字符串替換與移位 -
    響水縣不平: ______ 幫你寫好了#include#include#define size 100 void main() { char a[size],temp; int i, len; printf("輸入字符串:\n"); gets(a); printf("原來的字符串為:\n"); puts(a); len = strlen(a); for(i=0; i { if(a[i]=='a') { a[i]='e'; } else if(a[i]=='e') { a[i]=...
  • 陸飾13723865360: c語言編程替換文件中字符串 -
    響水縣不平: ______ /*文件字符串替換實(shí)用程序,算法簡(jiǎn)練有效*/ 編譯環(huán)境vc2005/dev-c++ #include<stdio.h> #include<stdlib.h> #include<string.h> #define N 10000 /* 設(shè)定文件最大字符個(gè)數(shù)不超過10000,可更改 */ int main() { int i=0,j,k=0,m=0,pos=0,max,len1,len2; ...
  • 陸飾13723865360: c語言在文本中查找字符串
    響水縣不平: ______ 第一空填:argv[1] //文件名以字符指針的形式存在argv[1]中 第二空填:fscanf(fp,"%s\n",str); //讀取一行的字符串,存到str這個(gè)字符數(shù)組中去 第三空填:fclose(fp); //關(guān)閉文件
  • 陸飾13723865360: 用C語言實(shí)現(xiàn)文件的查找與替換 -
    響水縣不平: ______ #include"stdio.h" #include"stdlib.h" main() { FILE *fp; char str[80],*p,*head; int n=0; long filelen; loop1: printf("請(qǐng)輸入您要用于操作的文件名及其完整路徑:\n"); gets(str); fp=fopen(str,"rb+"); if(fp==NULL) { printf("找不到指定文件,...
  • 免费精品国产自产拍在线观看图片| 精品国语一级无码| 色欲AV永久无码精品无码蜜桃| 日韩一区二区三区在线| 国产伦理久久精品久久久久 | 久久久久久精品毛片免费不卡| 青柠影院免费观看电视剧高清免费| 国产日韩欧美精品一区二区三区| 国产午夜欧美忘忧草| 人妻无码一区二区三区TV|