Zakończenie zerowania tablicy znaków
Rozważmy następujący przypadek:
#include<stdio.h>
int main()
{
char A[5];
scanf("%s",A);
printf("%s",A);
}
Moje pytanie brzmi, czy charA[5]
zawiera tylko dwa znaki. Powiedz „ab”A[0]='a'
, A[1]='b'
iA[2]='\0'
. Ale jeśli dane wejściowe mówią „abcde”, to gdzie jest'\0'
w tym wypadku. BędzieA[5]
zawierać'\0'
? Jeśli tak, to dlaczego?sizeof(A)
zawsze zwróci 5 jako odpowiedź. Wtedy, gdy tablica jest pełna, jest zarezerwowany dodatkowy bajt'\0'
którysizeof()
nie liczy się?