web-dev-qa-db-fra.com

'\ 0' et printf () en C

Dans un cours d'introduction à C, j'ai appris que lors du stockage, les chaînes sont stockées avec le caractère nul \0 À la fin. Mais que se passe-t-il si je veux imprimer une chaîne, dites printf("hello") bien que j'ai trouvé que cela ne se termine pas par \0 En suivant l'instruction

printf("%d", printf("hello"));

Output: 5

mais cela semble incohérent, pour autant que je sache que des variables comme des chaînes sont stockées dans la mémoire principale et je suppose que lors de l'impression de quelque chose, il pourrait également être stocké dans la mémoire principale, alors pourquoi la différence?

21
iaeliyen

Vous devez d'abord effacer votre concept. Comme il sera effacé lorsque vous traitez avec un tableau, la commande d'impression que vous utilisez ne compte que les caractères qui sont placés dans la paranthèse. Il est nécessaire dans la chaîne de tableau qu'il se termine par\0

0
Muhammad Kashif

Une chaîne est un vecteur de caractères. Contient la séquence de caractères qui forment la chaîne, suivie de la chaîne de caractères de fin spéciale: '\ 0'

Exemple: char str [10] = {'H', 'e', ​​'l', 'l', 'o', '\ 0'};

Exemple: le vecteur de caractères suivant n'est pas une chaîne car il ne se termine pas par '\ 0'

char str [2] = {'h', 'e'};

0
Nicola Brogelli