sprintf()-Problem



  • Hallo Leute!

    Ich habe eine (für euch wsl. einfache) Frage:

    Ich spiel gerade ein bisschen mit den stdlib-Funktionen herum, und habe etwas mit sprintf() probiert:

    int main()
    {
    
    char Arr[] = {'X', '4'};
    char cmd=0;
    
    if (Arr[0] == 'X')
    		{
    			if ((Arr[1] > '0') && (Arr[1] < '9'))
    			{
    				sprintf(cmd,"test%c\r",Arr[1]);
    			}
    
            }
    
    printf("Command: %c", cmd);
    
    }
    

    Warum bekomme ich hier nichts ausgegeben?



  • Weil der erste Parameter von sprintf eine Adresse sein muss. In diesem Fall also &cmd und nicht cmd. Allerdings passt in cmd nur ein Zeichen, Du schreibst aber mehrere hinein, das ist gar nicht gut, besser

    char cmd[50];

    anstatt
    char cmd;



  • Weil der erste Parameter bei sprintf ein Zeiger auf ein char Array mit genug Platz sein muss.
    Bei dir ist es nur ein char.

    char cmd[200] = "";
    ...
    printf("Command: %s", cmd);
    //                ^ Hier ändern
    

Anmelden zum Antworten