char* argv[]



  • moin,

    int _tmain(int argc, char* argv[])
    {
    char* a=argv[1];
    cout << a << endl;

    return 0;
    }

    cmd aufruf: > progname 1000

    aber egal was für ein string ich eingebe es gibt mir nur das erste zeichen aus.

    *(a+1) gibt mir irgendwas aber nicht das 2te zeichen. 😕



  • nameac schrieb:

    ...
    int _tmain(...

    Ich tippe mal, dass _tmain anders arbeitet als das standardkonforme main() ...
    Windows-spezifische Programmierung ?
    Mein Tipp: Wenn Du sowieso eine "Konsolenanwendung" schreiben willst, solltest Du auch main verwenden (und Dein Projekt entsprechend stricken).

    Gruß,

    Simon2.



  • Simon2 schrieb:

    Ich tippe mal, dass _tmain anders arbeitet als das standardkonforme main() ...

    tut es wohl auch. das kriegt unicode-strings vorgesetzt. mit 'main' sollte es gehen...



  • net schrieb:

    Simon2 schrieb:

    Ich tippe mal, dass _tmain anders arbeitet als das standardkonforme main() ...

    tut es wohl auch. das kriegt unicode-strings vorgesetzt. mit 'main' sollte es gehen...

    Und wieso ist argv dann ein char* argv[], müsste es dann nicht ein wchar_t* argv[] sein? Ein übliches Unicode-Zeichen bekommst du doch in ein char gar nicht rein.



  • Wenn Du unbedingt argv[1][] Zeichen für Zeichen ausgeben willst....

    unsigned int index = 0;
    while (0 != argv[1][index]){
    	cout << argv[1][index];
    	index++;
    }
    cout << endl;
    exit(0);
    

    Ansonsten müßte

    cout << argv[1] << endl;
    exit(0);
    

    auch reichen.

    Grüße Max



  • mawis schrieb:

    Ein übliches Unicode-Zeichen bekommst du doch in ein char gar nicht rein.

    das erklärt ja auch, warum er nur ein zeichen sieht. das nächste ist nämlich 0 und für 'cout' ist damit der string zuende.


Anmelden zum Antworten