(C) Длина строки становится больше, чем максимальный размер, который я указал? - PullRequest
0 голосов
/ 18 февраля 2019

Я провожу некоторые тесты, когда пользователь вводит строки в мою программу через командную строку, но меня что-то смущает.Когда я указываю максимальный размер массива 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
...