-4
Comment générer une chaîne de pointeur, le résultat de l'impression est "(null)" tout comme la sortie d'un caractère?Comment produire une chaîne, le résultat est (null)?
Comment générer une chaîne de pointeur, le résultat de l'impression est "(null)" tout comme la sortie d'un caractère?Comment produire une chaîne, le résultat est (null)?
printf("%s\n", *str ? str : "(null)");
Si le premier caractère pointé par str est '\ 0', la volonté ci-dessus imprimer (null). Sinon, il affichera la chaîne pointée par str.
Pour gérer aussi le cas:
char *str = NULL;
... Utilisation:
printf("%s\n", (str && *str)?str:"(null)");
Aucune idée de ce que vous demandez. 'char * str =" (null) ";' ??? – luk2302
'char str' n'est pas un pointeur, mais' NULL' est la macro de pointeur NULL. Vous avez un comportement indéfini lorsque vous essayez d'imprimer le contenu de 'str' avec'% s', qui attend un _string_ (c'est-à-dire, un tableau de caractères à terminaison nulle). Et pour 'char * str =" \ 0 "', d'abord il n'y a pas besoin de '\ 0'-- il suffit d'utiliser' char * str = "" 'pour une chaîne vide; Deuxièmement, cela n'imprime pas d'espace. il n'imprime rien (avant le '\ n' dans votre chaîne de format.) –
" Je ne peux pas voir la sortie, c'est un espace je pense. " Non, ce n'est pas du tout une sortie puisque vous lui avez donné une chaîne de 0 longueur. –