Zeichenkette einlesen und Später ausgeben. (z.B Namen)

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von IronSnake, 12. August 2006 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  1. #1 12. August 2006
    moin,
    ich hab da so nen kleines Problem mit cpp. Und zwar geht es um die Ein-/Ausgabe von Buchstaben.
    Es geht darum z.B beim Programmstart nach dem Namen gefragt zu werden....und diesen dann z.B bei Programmende wieder auszugeben.

    Habe ja das gesammte letzte Jahr aufgrund der Schule (AIT = Abitur + Informationstechnischer Assistent) mit Visual Basic gearbeitet. Dort konnte ich ja einfach ne Variable mit der Bezeichnung "Name" als String deklarieren und die Sache war gegessen.

    Nun mit dem Umstieg auf Cpp sind paar Fragen offen geblieben. Schleifen, If Else und der kannse Kram ist ja eigendlich gleich bis auf paar kleine Unterschiede.

    Nur komm ich halt damit nicht klar das alles als Objekt gesen wird....

    Kann keiner Variable per "cin >>" eine ganze Zeichenkette aus Buchstaben zuweisen und dann mit "cout <<" ausgeben xD. Weiß nicht welchen Datentyp ich der Variable Name zuweisne muss.
    Wenn ich se als "char" deklariere wird nur ein Buchstabe am ende ausgegeben ..........-.-

    Sry für de blöde Frage..arbeite erst seit einem Tag mit C++.

    Hoffe jemand kann mir das mal erklären und ggf. ein Beispiel dafür geben

    mfg
    IronSnake
     

  2. Anzeige
  3. #2 12. August 2006
    Hi,

    in C/C++ gibt es keinen String an sich. Sondern nur ein Char-Array.

    d.H.
    Code:
    "Hello World"
    ist in Wirklichkeit
    Code:
    'H' 'e' 'l' 'l' 'o' 'W' 'o' 'r' 'l' 'd''\0'
    Du deklarierst also einen Char-Array:
    Code:
    char string[20];
    Oder:
    Code:
    char string[] = "Hello World\n";
    Der Compiler setzt fuer dich jetzt automatisch die zahl zwischen [ und ] ein....

    string kann jetzt 20 Zeichen nehmen. ( Eigentlich nur 19, weil jeder "string" das Abschlusszeichen '\0' braucht )

    Willst du string jetzt etwas zuweisen, sind die gaengigsten Befehle:
    Code:
    sprintf(string,"usw usw");
    strcpy(string,"das kommt rein");
    wobei du auf Buffer Overflows aufpassen solltest und snprintf und strncpy hernehmen solltest.

    Findest genug in google.

    Willst du jetzt was einlesen, kannst du das mit string cin >> ,soweit ich weiss, machen ( bin in C++ nicht so bewandert ).

    Oder du benutzt fgetc:
    Das verdeutlicht vielleicht noch etwas, dass strings eigentlich nur char-arrays sind.
    Code:
    char c;
    // Das willst du
    char out[1024];
    int tmp = 0;
    while ( ( c = fgetc(stdin) ) != EOF ) {
     if (c == '\n') {
     // user hat enter gedrueckt
     out[tmp] = '\0';
     deine_funktion(out);
     break;
     }
     out[tmp] = c;
     tmp++;
     }
    
    Mfg,

    Kolazomai
     
  4. #3 12. August 2006
    hi

    in C++ gibts auch die headerdatei "string.h".

    einfach mit
    Code:
    #include <string.h>
    einbinden und dann kannste mit
    Code:
    string var;
    die variable var als string deklarieren.
    solche strings haben dann kein lästiges NUL-byte am ende und es gibt paar einfache operatoren um mit ihnen zu arbeiten (zB '+' um strings zusammenzufügen)

    mfg
    _mike
     
  5. #4 12. August 2006
    Natürlich hab ich in dieser Richtung schon gegoogelt. Leider versteh ich das trozdem noch nicht so richtig.

    Könnte mal jemand für Folgende Situation einen Quellcode posten? (Soll jetzt nur CMD Anwendung sein)

    Konsole fordert auf " Bitte geben sie ihren namen ein":
    *jetzt soll man die Möglichkeit haben seinen Namen zu schreiben.

    Amd Ende des Programms soll man verabschiedet werden

    Tschüss >>NAME<<

    Mich würd halt interessieren wie so etwas richtig aussehen muss.
     
  6. #5 12. August 2006
    Hi,

    ich kann leider nur C.

    In C++ wuerde das bestimmt einfacher gehen:

    Code:
    #include <stdio.h>
    
    int main() {
    printf("Bitte geben sie ihren Namen ein: ");
    
    char c;
    char out[1024];
    int tmp = 0;
    
    while ( ( c = fgetc(stdin) ) != EOF ) {
     if (c == '\n') {
     break;
     }
     if (tmp < 1024) {
     out[tmp] = c;
     tmp++;
     }
     else {
     break;
     }
     }
    
    out[tmp] = '\0';
    
    printf("Bye \"%s\"\n",out);
    
    return 0;
    }
    Das geht natuerlich auch einfacher ^^. So ist aber ziemlich sicher und man kann es perfekt kontrollieren.
    Code:
    fscanf("%s",char_array);
    wuerde z.b. nur 1 Wort einlesen.

    Mfg,

    Kolazomai
     
  7. #6 12. August 2006
    Code:
    #include <iostream.h>
    
    int main()
    {
     char Name[30];
     cout << "Bitte geben sie ihren Namen ein: ";
     cin >> Name;
     cout << "Tschüß " << Name << "!" << endl;
     return 0;
    }
    
     
  8. #7 12. August 2006
    supi big thx. Habt jetzt alle nen 10er. Interessiert mich nur noch ob es auch solche Sprungmarken ala "goto" gibt. Wenn da jemand weiter weiß einfach ma ne Pn schicken.

    Aonsonten hat sich das Thema erledigt.

    Ich mach ma dicht^^
     

  9. Videos zum Thema
Die Seite wird geladen...