char an eine string-funktion übergeben



  • Hi,

    Wie kann man ein Char aus einem String einer Funktion übergeben, die einen String
    als Parameter erwartet?
    bsp:

    void schreib(char *msg) {
     printf("%s",msg);
    }
    
    ...
    
    char *test = "test";
    char test2 = test[1];
    schreib(test2); ->geht nicht 
    >>cannot convert parameter 1 from 'int' to 'char *'
    


  • Höchstens, indem Du einen ein char langen string erzeugst...

    char str[2];
    str[0] = test[1];
    str[1] = '\0';
    schreib(str);
    


  • C99 kommt dir mit arrayliteralen zur hilfe:

    int foo(char *bar)
    {
    	return bar[0];
    }
    
    int main(void)
    {
    	char *test = "test";
    	char test2 = test[1];
    
    	printf("%d", foo([b](char[]){test2, '\0'}[/b])); // der cast nach char[] ist notwendig
    
    	return 0;
    }
    


  • Oder du könntest auch die Adresse deines Zeichens (&test2) übergeben.

    (aber Achtung: ein einzeln stehendes Zeichen hat keinen Null-Teminator - das könnte Probleme geben, wenn die Funktion von einem "ordentlichen" String ausgehen will)


Anmelden zum Antworten