2017-08-20 1 views
-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)?

+0

Aucune idée de ce que vous demandez. 'char * str =" (null) ";' ??? – luk2302

+1

'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.) –

+1

" 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. –

Répondre

-3
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)");