i ont ces deux c code de programmation .Ils sont identiques, sauf pour une étape et en raison de que leur sortie est totalement différente s'il vous plaît aidez-moi pourquoi est-ce qui se passetableau de caractères avec pointeur en c avec% s
main()
{
char ch[10]="123456";
char *p;
int a;
scanf("%d",&a);
p=ch+a;
*p='0';
printf("%s",ch);
}
output is
[email protected]:~$ ./a.out
4
123406
Et voici autre ont seulement une légère modification à la ligne [* p = « 0 »]
main()
{
char ch[10]="123456";
char *p;
int a;
scanf("%d",&a);
p=ch+a;
*p=0; //only change is here rest is same
printf("%s",ch);
}
and output is
[email protected]:~$ ./a.out
4
1234
s'il vous plaît me hep pourquoi il est dEFFERENT c'est parce que je suis en utilisant% s dans printf ou pour toute autre chose que je ont été portés disparus
''0''! =' 0'. [Vous pouvez trouver ceci utile] (http://www.asciitable.com/) – WhozCraig
Note: 'p = ch + a;' peut potentiellement invoquer UB, si le nombre entré a fait pointer le pointeur en dehors du tableau. –
Imaginons que nous entrions la valeur