Also, wenn du sagst cin >> zahl, dann belegst du gleich alle 100 Elemente mit dem eigegebenen Wert, d.h. man würde einfach nichts Besonderes sehen, weil alle den gleichen Wert hätten.
Das stimmt nicht, cin >> zahl schreibt genau input + 1 Elemente in das Array, werden also "12" eingegeben, so wird {0x31, 0x32, 0x00} geschrieben, der rest der Daten bleibt uninitialisiert.
Edit: Übrigens hat dein Code das Problem, dass er die Zahl Ziffernweise einließt, bequemer aber ist es die Zahl als ganzes angeben zu können.
reverse_chars funktioniert auch nicht allgemein, man sollte die Funktionssignatur in
|
C/C++-Quelltext
|
1
|
void reverse_chars (char *szNums, size_t size)
|
ändern.
Edit2: Ungetestet, sollte aber laufen:
|
C/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
bool reverse_chars ( const char *szInput, const size_t sizeInput, char *szOutput, const size_t sizeOutput )
{
if ( !szInput || !szOutput || !sizeInput || !sizeOutput )
return false;
size_t sizeCopy = sizeInput;
if ( sizeCopy > sizeOutput )
sizeCopy = sizeOutput;
int k=0;
for ( int i=sizeCopy; i >= 0; i-- )
if ( szInput[i] )
szOutput[k++] = szInput[i];
return true;
}
|
Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von »silence« (26. August 2010, 19:32)