2017-04-01 4 views
-1

Hier ist mein Code:Für Anweisung endet zweimal?

#include <iostream> 

using namespace std; 

int main() { 
char xxx[100] = {}; 

cin >> xxx; 

for (int i = (sizeof(xxx)/sizeof(*xxx)) - 1; i >= 0; i--) { 

    if (xxx[i] != NULL) { 

     cout << xxx[i]; 

    } 

} 

cout << endl << endl; 
main(); 

return 0; 

} 

Das Problem ist, dass, wenn ich "John Smith" in xxx geben Sie folgende Ausgabe:

nhoJ 

htimS 

Warum wird die "cout < < Endl < < Endl" an Stelle von Raum geschehen?

+6

Ihr Programm hat ein undefiniertes Verhalten: Sie dürfen 'main' nicht aufrufen. –

+1

Woher lernst du das Zeug? Wo auch immer es ist, lernen Sie es von woanders. –

+1

Wenn eine 'for'-Anweisung zweimal vorkommt, macht das eine 'acht'-Anweisung? – user4581301

Antwort

0

Es wurde mit cin.getline behoben. Vielen Dank.

#include <iostream> 

using namespace std; 

int main(){ 

for (;;) { 

    char xxx[100] = {}; 

    cin.getline(xxx, 100); 

    for (int i = (sizeof(xxx)/sizeof(*xxx)) - 1; i >= 0; i--) { 

     if (xxx[i] != NULL) { 

      cout << xxx[i]; 

     } 

    } 

    cout << endl << endl; 

} 

return 0; 

} 
Verwandte Themen