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 an

    Mehr Funktionen solltest du eigentlich nicht brauchen.

    Hier noch die Referenz:
    http://www.cplusplus.com/ref/indexr.html


Log in to reply