umgang mit char*



  • hallo ich habe die übungsaufgabe 10 namen in ein char* array einzulesen

    ich habe eines erstellt mit char* namen[10]

    nur wie kann ich da was reinschreiben?

    etwas in der art cin >> namen[0];
    klappt nicht, und string darf ich nicht verwenden...

    kann einer ein minimalbeispiel liefern das funktioniert?



  • int main( int argc, char *argv[] )
    {
    	char pText[255];
    	cin >> pText;
    
    	cout << pText << endl;
    }
    

    char* namen[10] ist kein char array sonder ein pointer-to-char array.



  • anscheinend kann ichs nicht ganz klar erklären:
    hier die aufgabe:

    Schreiben Sie ein C oder C++ Programm, welches folgende 3 Aufgabe erledigt:

    1. Sie können in einem ersten Schritt 10 Paare (Nachname, Matrikelnummer) in zwei Feldern vom Typ char*[10] und int[10] eintragen. An der Stelle i des jeweiligen Feldes stehen die zueinander gehörenden Daten. Dabei sind die Namen maximal 20 Zeichen lang und die Matrikelnummer ist höchstens 7-stellig.

    ich mach es grade mit string array aber das muss ich dann ausbessern...



  • also was ich brauche ist ein array in dem ich 10 strings speichern kann

    nur eben nicht string namen[10]

    sondern statt string soll ich char* verwenden... wie geht das?



  • Also ich verstehe ehrlich gesagt das Problem nicht das du damit hast. du sollst es als char und damit als CString machen.

    char namen[10][21];//21 da Namen maximal 20 Zeichen haben aber ein '\0' noch Platz finden sollte
    for(int i=0;i<10;++i)
    {
        int j=0;
        while(true)
        {
            char tmp;
            cin.get(tmp);
            if(tmp=='\n')
            {
                namen[i][j]='\0';
                break;
            }
            else
            {
                namen[i][j]=tmp;
                ++j;
                if(j==20)
                {
                    namen[i][j]='\0';
                    break;
                };
            };
        };
        //hier noch die Nummer einlesen
    };
    

    Das löst das problem, geht evtl sogar noch etwas eleganter, aber funktioniert.



  • danke 🙂


Anmelden zum Antworten