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
Geopolitik i cyberspace
Mark Fiedel i Styrelsen for Samfundssikkerhed påpeger behovet for, at Danmark kigger kritisk på leverandørafhængighed.
13. juni 2025
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