08. juni 2004 - 19:27
Der er
15 kommentarer og 1 løsning
Search-Replace - C++
Jeg ville bare spørge om det var muligt at finde og erstatte et bogstav/ et ord i en ekstern fil i C++...
Annonceindlæg fra Computerworld it-jobbank
Ja ved at læse den linie for linie, erstatte og skrive ud igen.
Bare et mindre eksempel :)...
Giv mig lige 20 minutter ...
Her er et C eksempel som også virker i C++: #include <stdio.h> #include <stdlib.h> #include <string.h> void replace(char *s,char *s1,char *s2) { int i,j; char *tmp; tmp = (char *)malloc(strlen(s)+1); strcpy(tmp,s); i = 0; j = 0; while(i<strlen(tmp)) { if(strncmp(tmp+i,s1,strlen(s1))==0) { strcpy(s+j,s2); i=i+strlen(s1); j=j+strlen(s2); } else { s[j]=tmp[i]; i++; j++; } } s[j] = '\0'; free(tmp); return; } int main() { char line[133]; FILE *fp1,*fp2; fp1 = fopen("input.dat", "r"); fp2 = fopen("output.dat", "w"); while(!feof(fp1)) { if(fgets(line,sizeof(line),fp1)) { replace(line,"hund","kat"); fputs(line,fp2); } } fclose(fp1); fclose(fp2); return 0; }
Jeg prøver lige at gøre det lidt mere C++'sk Og I skal selv være opmærksom på max. linie længde !!
#include <cstdlib> #include <cstring> #include <fstream> using namespace std; void replace(char *s,char *s1,char *s2) { int i,j; char *tmp; tmp = (char *)malloc(strlen(s)+1); strcpy(tmp,s); i = 0; j = 0; while(i<strlen(tmp)) { if(strncmp(tmp+i,s1,strlen(s1))==0) { strcpy(s+j,s2); i=i+strlen(s1); j=j+strlen(s2); } else { s[j]=tmp[i]; i++; j++; } } s[j] = '\0'; free(tmp); return; } int main() { FILE *fp1,*fp2; ifstream f1("input.dat"); ofstream f2("output.dat"); while(!f1.eof()) { char line[133]; if(f1.getline(line,sizeof(line))) { replace(line,"hund","kat"); f2 << line << endl; } } return 0; }
08. juni 2004 - 20:46
#10
FILE, fp1, fp2 undeclared?...
08. juni 2004 - 20:52
#11
Er det adr.? eller...
08. juni 2004 - 20:55
#12
I C++ eksmeplet kan I bare slette linien: FILE *fp1,*fp2; det er en rest fra C versionen.
08. juni 2004 - 21:00
#13
Altså, i teorien brude jeg kunne skrive noget i input.dat som den spytter ud i output.dat, men som hund og kat?
08. juni 2004 - 21:02
#14
Den erstatter alle forekomster af hund med kat.
08. juni 2004 - 21:02
#15
ahh .. ! ok .. jeg fandt selv ud af det!! .. Tak .. !!!
08. juni 2004 - 21:02
#16
Feeed ... ;)
Kurser inden for grundlæggende programmering