char durch string ersetzen



  • Hallo,
    ich habe ein problem, und zwar habe ich einen String, in dem ich ein bestimmtes Zeichen durch einen String ersetzen möchte. Also z.B. "abc" als Ausgangsstring, und "b" möchte ich durch "123" ersetzen, so das der String hinterher "a123c" ist. Habe leider grade garkeine idee, vielleicht kann mir jemand helfen..

    mfg



  • nimm nen zwischenpuffer, alles was nicht 'b' ist kopierste, alles was 'b' ist schreibste "123".
    🙂



  • if char[i] not gleich b do copy andernfalls tu put rein 123
    🙂



  • | schrieb:

    nimm nen zwischenpuffer, alles was nicht 'b' ist kopierste, alles was 'b' ist schreibste "123".
    🙂

    kannst du mir ein code schreiben?



  • ist ja nicht ganz so trivial. man will ja oft nicht nur einen buchstaben ersetzen, sondern ganze zeichenfolgen.



  • goggo gagga schrieb:

    | schrieb:

    nimm nen zwischenpuffer, alles was nicht 'b' ist kopierste, alles was 'b' ist schreibste "123".
    🙂

    kannst du mir ein code schreiben?

    wie wär's wenn du erstmal alleine versuchst und bei Problemen dich hier wendest, oder gehörst du auch zur Fraktion "möglich wenig Arbeit selbst machen"?



  • Hallo,
    vielen dank 🙂 habs volgendermaßen gemacht:

    int l = 0;
     for(int k = 0; k <= strlen(instrclean); k++){
          if(instrclean[k] == '<'){
               tmp[l] = '&';
               tmp[l+1] = 'l';
               tmp[l+2] = 't';
               tmp[l+3] = ';';
               l +=4;       
          }
          else if(instrclean[k] == '>'){
               tmp[l] = '&';
               tmp[l+1] = 'g';
               tmp[l+2] = 't';
               tmp[l+3] = ';';
               l +=4;       
          }
          else{
               tmp[l] = instrclean[k];
          }
    
    }
    

    ist allerdings copy&paste aus meinem code, falls ich irgendwas vergessen hab einfach melden 🙂
    ach ja, instrclean ist der unbearbeitete string, tmp der neue..

    grüße



  • das kannst du auch direkt in eine datei schreiben, dafür brauchst du keine variable.
    🙂



  • el_gasto schrieb:

    habs volgendermaßen gemacht:

    Sieht doch schonmal ganz gut aus. Du musst natürlich darauf achten, dass du nicht über das Ende des tmp-Strings hinausschreibst.

    Und es ist etwas ineffizient, dass du in jedem einzelnen Schleifendurchgang strlen aufrufst, du solltest es besser einmal vor der Schleife aufrufen und die Stringlänge in eine Variable speichern. Und genaugenommen brauchst du strlen hier überhaupt nicht, da du ja in der Schleife ohnehin irgendwann auf die abschließende 0 stößt.



  • namespace invader schrieb:

    Und es ist etwas ineffizient, dass du in jedem einzelnen Schleifendurchgang strlen aufrufst, du solltest es besser einmal vor der Schleife aufrufen und die Stringlänge in eine Variable speichern. Und genaugenommen brauchst du strlen hier überhaupt nicht, da du ja in der Schleife ohnehin irgendwann auf die abschließende 0 stößt.

    Genaugenommen brauchst du hier tmp ebenfallls nicht.



  • 🙄

    spasstroll schrieb:

    if char[i] not gleich b do copy andernfalls tu put rein 123
    🙂


Anmelden zum Antworten