Vinzenz Mai: C-Arrays und Stringverarbeitung

Beitrag lesen

Hallo,

JS-Beispiel:
var array = new array();
array["a"] = "001";
array["b"] = "002";
array["c"] = "003";

wie kann ich sowas in c realisieren?

das hängt davon ab :-)

a) Definiere Deine Aufgabenstellung genau.
   Was willst Du erreichen?

Hier hast Du etwas ganz anderes als in Deinem Ausgangsposting. Hier ersetzt Du jedes Zeichen der Eingabe durch drei Zeichen in der Ausgabe. Der Ausgabestring ist folglich dreimal so lang wie die Eingabe. Willst Du das wirklich?

Nächster Punkt:

Dein Programm besteht aus drei verschiedenen Teilen:

a) Eingabe
 b) Verarbeitung
 c) Ausgabe

Es ist eine verflixt gute Idee, bereits bei solch' simplen Programmen, diese Aufgaben mit Funktionen zu erledigen. Es erleichtert Dir ganz gewaltig das Testen und hilft Dir Fehler zu vermeiden:

a) Eingabe
/*
    Aufgabe:
    Liefert die Eingabe des Benutzers als eine nullterminierte Zeichenkette
    zurück.
    Seiteneffekt:
    Allokiert den notwendigen Speicher
*/
char* eingabe()

// Alternativ: übergebe den Eingabepuffer
// void eingabe(char* puffer)

b) Verarbeitung
/*
    Aufgabe:
    Codiert eine Eingabezeichenkette gemäß Vorschrift.
    Seiteneffekt:
    Allokiert den notwendigen Speicher
*/
char* codiere(char* eingabe)

// Alternative: übergebe Ein- und Ausgabepuffer (call by Reference)
// void codiere(char* klartext, char* chiffre)

c) Ausgabe
/*
    Aufgabe:
    gibt die übergebene Zeichenkette aus
*/
void ausgabe(char* zeichenkette)

d) Aufräumen
/*
    Aufgabe:
    gebe den dynamisch angeforderten Speicher wieder frei.
*/
// Anmerkung: entfällt bei Ein- und Ausgabepuffern, die per Referenz
//            übergeben werden (wäre also einfacher)

Grundsätzlich musst Du bei Zeichenketten in C gut aufpassen, um Buffer Overflows zu vermeiden.

Kurz und gut: Warum um alles in der Welt willst Du Dir C antun? Warum Stringverarbeitung in C (die letzte Sprache, in der ich dies tun möchte).

Freundliche Grüße

Vinzenz

0 53

C-Arrays und Stringverarbeitung

minicrispie
  • programmiertechnik
  1. 0
    minicrispie
  2. 0
    Vinzenz Mai
    1. 0
      minicrispie
      1. 0
        Vinzenz Mai
        1. 0
          minicrispie
          1. 0
            Vinzenz Mai
            1. 0
              minicrispie
              1. 0
                Vinzenz Mai
              2. 0
                dedlfix
                1. 0
                  minicrispie
                  1. 0
                    Vinzenz Mai
            2. 0

              Gute und schlechte Übersetzungen

              Der Martin
              • sonstiges
              1. 0
                Vinzenz Mai
                1. 0
                  Tom
                2. 0
                  Der Martin
                  1. 0
                    Vinzenz Mai
          2. 0
            Vinzenz Mai
            1. 0
              minicrispie
              1. 0
                Vinzenz Mai
                1. 0
                  minicrispie
                  1. 0
                    Vinzenz Mai
    2. 0
      hotti
      1. 0
        Vinzenz Mai
        1. 0
          hotti
      2. 0
        minicrispie
        1. 2
          Multi
          1. 0
            minicrispie
            1. 1
              Vinzenz Mai
            2. 0
              Multi
    3. 0
      Stefanie
      1. 0
        Harlequin
        1. 0
          Stefanie
          1. 0
            Harlequin
            1. 0
              Tom
            2. 0
              Vinzenz Mai
      2. 0
        Der Martin
        1. 0
          Tom
          1. 0

            Strafe für schwer Lesbares

            Kai345
            • menschelei
            1. 0
              Tom
          2. 0
            Der Martin
          3. 0
            Stefanie
            1. 0
              Harlequin
            2. 0
              Tom
              1. 0
                Stefanie
                1. 0
                  Tom
      3. 0
        Vinzenz Mai
        1. 0
          Tom
  3. 0
    Vinzenz Mai
    1. 0
      minicrispie
      1. 1
        Stefanie
  4. 0
    stareagle
    1. 0
      minicrispie