Я провожу некоторые тесты, когда пользователь вводит строки в мою программу через командную строку, но меня что-то смущает.Когда я указываю максимальный размер массива char [], программа все равно каким-то образом делает char [] длиннее указанной мной максимальной длины без ошибок.Почему это так?И почему sizeof(input)
показывает 5 байтов, несмотря на то, что input
содержит 14 символов?
#define MAX_LENGTH 5
int main(){
char input[MAX_LENGTH];
printf("Max length: %d\n", MAX_LENGTH);
printf("strlen(input) = %d\n", strlen(input));
printf("sizeof(input) = %d\n", sizeof(input));
printf("Enter string: ");
scanf(" %s", input);
printf("strlen(input) = %d\n", strlen(input));
printf("sizeof(input) = %d\n", sizeof(input));
printf("Input: %s", input);
return 0;
}
Я ожидаю, что это отсканирует либо первые 5 символов ввода пользователя;но вместо этого он дает входные данные для всего, что набрано ...?
cmd строка вывода:
Max length: 5
strlen(input) = 0
sizeof(input) = 5
Enter string: foobarpizzapie
strlen(input) = 14
sizeof(input) = 5
Input: foobarpizzapie