ASCII Zeichen einzeln einlesen und in einem array zusammenfügen

Mo1k

Mitglied
Hallo,

ich bin c++ Anfänger und versuche gerade folgendes:
Ich will einzelne Buchstaben eines Wortes einlesen, diese dann in ein Array speichern und dann ausgeben.

- IDE = Code::Blocks v10.05
- Compiler = mingw32-g++

hier ist mein Code:
Code:
#include <iostream>

using namespace std;

int main()
{
    char a;
    char b;
    char c;
    char d;
    char array[] = "";

    cin>>a;
    array[0] = a;
    cin>>b;
    array[1] = b;
    cin>>c;
    array[2] = c;
    cin>>d;
    array[3] = d;

    cout << array[0] << array[1] << array[2] << array[3] << endl;

    return 0;
}

Wenn ich abcd eingebe bekomme ich adcd ausgegeben. Kann mir jemand sagen wieso ?

Mfg Mo1k
 
Zuletzt bearbeitet:
Hi

a) Wenn du die chars sowieso im Array hast,
kannst du auch das ganze Array mit cout ausgeben lassen.
Kein Fehler, aber unnötig kompliziert:
C++:
cout << array[0] << array[1] << array[2] << array[3] << endl;
Besser so:
C++:
cout << array << endl;

b) Nach dem:
C++:
    cin>>a;
    array[0] = a;
    cin>>b;
    array[1] = b;
    cin>>c;
    array[2] = c;
    cin>>d;
    array[3] = d;
musst du noch das Arrayende markieren:
C++:
array[4] = '\0';

c) Der Hauptfehler:
Dein Array ist nicht groß genug, um 4 Zeichen zu beinhalten.
Du legst es mit []="" an, dH.: Es ist gerade groß genug für ""
Also nur ein Zeichen für das Stringende, ergibt 1 char im Array.
Du brauchst aber 4 Zeichen+Stringende = min. 5 chars.
C++:
char array[5];
Was hier mit dem zu kleinen Array passiert, ist unvorhersehbar.
Wahrscheinlich deswegen die falsche Buchstabenausgabe.

Gruß
 
Zurück