Suchen und ersetzten
-
Ich schreibe momentan an einem Programm, das ein File einlesen, nach einem vorgegeben String durchsuchen, diesen durch einen anderen ersetzen und dann in einem neunen File abspeichern soll.
Bis jetzt klappt das allerdings nur für einzelne Zeichen, es soll aber für ganze Worte funktionieren.
Was kann ich tun?
#include <stdio.h> #include <stdlib.h> #define BUFSIZE 100 int main() { FILE *in_stream; FILE *out_stream; char seek_sign = '@'; char replace_sign = 'M'; char content; char header_string[BUFSIZE] = "C:/c-codes/RTRT_weiter/the_bypass_project/init.h"; char fname_in[BUFSIZE] = "C:/c-codes/RTRT_weiter/the_bypass_project/fkt1.c"; char fname_out[BUFSIZE] = "C:/c-codes/RTRT_weiter/the_bypass_project/fkt1_ziel.c"; // printf("Bitte Quell - Datei - Pfad eingeben: "); // scanf("%s",fname_in); //Einlesen des gewünschten File - Namens // printf("Bitte Ziel - Datei - Pfad angeben: "); //scanf("%s",fname_out); in_stream = fopen(fname_in,"r"); out_stream = fopen(fname_out, "w"); if (in_stream == NULL) printf("\n\nQuelldatei nicht geöffnet!\n"); else { if (out_stream == NULL) printf("\n\nZieldatei nicht geöffnet!\n"); else { fprintf(out_stream,"#define %c",replace_sign); fprintf(stdout,"#define %c",replace_sign); //kontrolle while((content=getc(in_stream))!=EOF) { if(content == seek_sign) { content = replace_sign; } else {} putc(content,out_stream); fprintf(stdout,"%c",content); //kontrolle } } } fclose(in_stream); fclose(out_stream); return 0; }
-
Schau dir mal folgende Funktionen an:
fgets() -> liest eine Zeile ein
strstr() -> ermittelt die Position eines Strings innerhalb eines Strings (z. b. ein Wort in einer Zeile ;))
strncpy() bzw. memcpy() -> kopiert von einem Speichebereich zum anderen
strlen() -> ermittelt die Länge eines Strings
strncat() -> hängt einen String an einen anderen anMehr Funktionen solltest du eigentlich nicht brauchen.
Hier noch die Referenz:
http://www.cplusplus.com/ref/indexr.html