Problem mit Strings



  • Hi,

    ich habe folgende Probleme:

    1. Wie kann ich einen über die Konsole eingegebenen String nach bestimmten Buchstaben bzw. Buchstabenkombos effizient durchsuchen?

    und 2. Wie kann ich die gefundenen Buchstaben bzw. Buchstabenkombos mit gleichlautenden Buchstaben bzw. Buchstabenkombos ersetzen und jede Variante ausgeben?

    Vielen Dank.

    Hier mein bisheriger Quellcode

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>

    int i,j;
    int such_anz;

    int main (void) {

    char string[]="Seite";
    char suchstring[4][20]={"|","ei","ai","|"};

    //Wird dieser Vek. so angelegt?????

    printf("Bitte Wort eingeben:");
    scanf("%s",string);

    such_anz=2;

    for(i=0;i<such_anz;i++){
    if( strstr(string, suchstring) != NULL) {
    printf("Suchstring \"%s\" gefunden\n", suchstring[i]);
    return EXIT_SUCCESS;
    }
    for (j=0;j<such_anz;j++){
    if (suchstring[i]!="|" && i != strstr(string, suchstring)){
    printf("einfuegen: \"%s\"\n",suchstring[i]);
    i++;
    }
    }
    }

    }



  • bluethunder schrieb:

    1. Wie kann ich einen über die Konsole eingegebenen String nach bestimmten Buchstaben bzw. Buchstabenkombos effizient durchsuchen?

    na mit 'strstr' (machste doch schon). oder soll's was schnelleres sein? vielleicht findeste hier was (boyer/moore oder so): http://en.wikipedia.org/wiki/String_searching_algorithm

    bluethunder schrieb:

    und 2. Wie kann ich die gefundenen Buchstaben bzw. Buchstabenkombos mit gleichlautenden Buchstaben bzw. Buchstabenkombos ersetzen und jede Variante ausgeben?

    den teil vor dem suchstring rauskopieren, deine andere kombination anhängen und dann den teil nach dem suchstring anhängen.
    (such mal hier im forum nach 'str_replace' oder 'replace').
    🙂



  • [quote=";fricky"]

    bluethunder schrieb:

    den teil vor dem suchstring rauskopieren, deine andere kombination anhängen und dann den teil nach dem suchstring anhängen.

    🙂

    Was meinst du da genau (sry, hab es nicht ganz verstanden)?



  • bluethunder schrieb:

    Was meinst du da genau (sry, hab es nicht ganz verstanden)?

    etwa so:

    void main() 
    {
        // original
        char *old = "mars - the bringer of war | gustav holst | the planets suite for orchestra";
    
        char *search = "war";                    // das soll ersetzt werden
        char *replacement = "love";              // und zwar damit
        char new[256];                           // hier rein kommt der neue string
        char *found = strstr (old, search);      // suchen ...
    
        if (found)                               // gefunden?
        {
            memcpy (new, old, found-old);        // teil vor dem suchwort kopieren
            new[found-old] = 0;                  // 0 anhaengen, sonst geht strcat nicht
            strcat (new, replacement);           // suchwort anhaengen
            strcat (new, found+strlen(search));  // den rest des originalstrings anhaengen
        }
    
        puts (old); // original
        puts (new); // faelschung
    }
    

    🙂


Anmelden zum Antworten