Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Einen Satz einlesen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
05.04.2008, 17:18 Uhr
~Marius
Gast


Ich bin totaler Anfänger in C++ und möchte einfach nur einen Satz mit Leerstellen einlesen und dann ausgeben, aber irgendwie funzt das nicht.Das Problem liegt bei den Leerstellen.
Das geht doch mit char *str[100]; und dann scanf("%s" , str); oder?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
05.04.2008, 18:12 Uhr
xXx
Devil


Aua, nein geht es nicht char* str[100]; ist der Fehler. .. du willst char str[100]; => einen Array von Zeichen => eine Zeichenkette

C++ Style:

C++:
#include <string>
#include <iostream>

int main()
{
    std::cout << "Bitte geben Sie einen Satz ein!\n";
    std::string phrase;
    std::getline(std::cin, phrase);
    std::cout << "Sie haben \"" << phrase << \"" eingegeben!" << std::endl;
}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
05.04.2008, 19:05 Uhr
0xdeadbeef
Gott
(Operator)


Alternativ, in C:

C++:
#include <stdio.h>
#include <string.h>

#define SATZ_MAX 100

int main(void) {
  char satz[SATZ_MAX];

  puts("Geben Sie einen Satz ein:");
  fflush(stdout);
  fgets(satz, SATZ_MAX, stdin);

  /* fgets behält das \n am Ende, daher */
  satz[strlen(satz) - 1] = '\0';

  printf("Sie haben \"%s\" eingegeben.\n", satz);

  return 0;
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
06.04.2008, 11:27 Uhr
~Marius
Gast


Musste zwar noch ein paar Kleinigkeiten verbessern, aber der Code geht


C++:
#include <string>
#include <iostream>

using namespace std;

int main()
{
    std::cout << "Bitte geben Sie einen Satz ein!\n";
    std::string phrase;
    std::getline(std::cin, phrase);
    std::cout << "Sie haben " << phrase << " eingegeben!" << std::endl;
    
    cin.get();
    
}



Danke für eure Hilfe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
06.04.2008, 19:01 Uhr
mischa
Fragender


Hallo,
dein Code ist leider nicht ganz korrekt Marius. Du hast using namespace std benutzt aber die std:: nicht entfernt, ein normaler c++ Compiler sollte den Code dir um die Ohren hauen und das cin.get() am Ende wird nicht funktionieren wenn etwas im Eingabestrom drin ist. Wen ich mich nicht irre steht in den FAQ wie man das geschickt handhabt.
--
Latein Unterricht ist die spätere Rache der Römer an den Germanen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
06.04.2008, 19:05 Uhr
0xdeadbeef
Gott
(Operator)


Auch wenn using namespace angegeben ist, kann der Namespace explizit angegeben werden. Es ist zwar etwas unschön, aber nicht falsch. Und im Stream sind nach der Benutzung von std::getline keine Rückstände mehr* - es sei denn, du gibst äußerst schnell mehr als eine Zeile ein.

* in diesem speziellen Fall jedenfalls. Prinzipiell entfernt std::getline alles bis zum nächsten \n, oder eines anderen explizit angegebenen Trennzeichens.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 06.04.2008 um 19:06 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
06.04.2008, 20:16 Uhr
~xXx_off
Gast


[ironie]Naja ich sehe eher dei Frage darin, ob "verbessern" die richtige Aussage ist. Das Programm ist nach der letzen Ausgabe abgearbeitet. Warum noch aufbleiben? Wenn du das dem Programm als Feature hinzufügen willst, ist das i.O. doch ist es eine subjektive Einschätzung, dass das Programm dadurch "verbessert" wurde![/ironie]

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: