2017-09-19 5 views
-3

Ich muss Zeichen aus der Benutzereingabe in Array, aber nicht eins nach dem anderen zu speichern. Der Benutzer wird sie als eine Zeile wie diese eingeben;erhalten Zeichen (nicht durch Leerzeichen getrennt) in Array mit scanf()

.... 

Ich brauche jeden Punkt in Array zu speichern, aber ich kann das nicht tun:

scanf("%s%s%s%s", &s[0], &s[1], &s[2], &s[3]) 

weil Benutzer N Anzahl der Punkte eingeben. Also muss es dynamisch sein, denke ich.

+0

Haben Sie versucht, "% c% c% c% c" 'als Format Zeichenfolge stattdessen? Oder verwenden Sie ['std :: iStream :: get()'] (http://en.cppreference.com/w/cpp/io/basic_istream/get) in einer Schleife. Ich sehe auch nicht, warum man 'std :: getline()' nicht einfach benutzen kann? – user0042

+0

Willst du nur Punkte lesen? Wenn dies der Fall ist, lesen Sie die ganze Zeichenfolge mit getline() in eine std :: string. Sie haben jetzt eine Reihe von Zeichen. – jumper0x08

Antwort

4

scanf() ist eine C-Laufzeitfunktion. In C++ sollten Sie stattdessen std::cin verwenden. Zum Beispiel mit std::getline(). Sie können die zurückgegebenen std::string wie ein Array von Zeichen behandeln.

1

Benutzer werden sie als eine Zeile wie folgt eingeben; .... Ich brauche jeden Punkt in der Matrix zu speichern,

C Lösung:

obere gesund wie 1000 gebunden definieren und einen Scanset"%[]" verwenden.

// Read up to 1000 `.` 
char dot[1000 + 1]; 
if (scanf(" %1000[.]") == 1) { 
    // Success 
    puts(dot); 
} 

Zusätzlicher Code erforderlich, wenn andere nicht ., nicht -weiß-Leerzeichen müssen behandelt werden.

Verwandte Themen