char Array mit Zeichen füllen

timestamp

Mitglied Käsekuchen
Hi

ich bin noch relativ unerfahren in C++ und schreibe gerade mal zum Einstieg das berühmte Spiel "Schiffe versenken". Ich scheitere nur gerade an der Befüllung eines Arrays: Ich möchte gerne die Buchstaben A-J eintragen, mit möglichst wenig Code. Nur leider stürzt mein Programm hierbei ab, mit der Fehlermeldung "Programm funktioniert nicht mehr".

C++:
char *cols[10];
//[...]
for( i = 0; i < 10; i++ ){
  sprintf(cols[i],"%c",i+65);
}

edit: Wenn man etwas mehr schlafen würde, würde man gar nicht erst so einen Thread eröffnen. Die Lösung ist natürlich:

C++:
char cols[10];
//[...]
for( i = 0; i < 10; i++ ){
  cols[i] = 65+i;
}
 
Zuletzt bearbeitet:
Hi.

Warum verwendest du denn den ASCII Code statt einfach 'A'? Keine "Magic Numbers" im Code!

Eine weitere, funktionale Methode:
C++:
char cols[10] = { 'A' };
transform(cols, cols + cols_size - 1, cols + 1, bind1st(plus<char>(), 1));
Oder mit einem Generator:
C++:
template <typename T>
struct seq {
    seq (const T& init) : _val(init) {}

    T operator() () {
        return _val++;
    }
private:
    T _val;
};
...

generate_n(cols, cols_size, seq<char>('A'));
Gruß

PS: Der Vollständigkeit halber die Version in C++0x mit einer Lambda-Funktion:
C++:
char start = 'A';
generate_n(cols, cols_size, [&]() { return start++; });
 
Zuletzt bearbeitet:
Zurück