Я хочу создать пустую строку с фиксированной длиной, скажем 100, а затем ввести пользовательский ввод для этой строки. По какой-то причине, когда я пытаюсь отсканировать строку, код не показывает мне все ведущие пустые пространства после ввода пользователем. Если моя пустая строка имеет длину 20 и ввод 5 символов, тогда счетчик должен быть 20. Я пропустил что-то очень простое здесь, или компилятор усекает пустые пространства, несмотря ни на что?Строка с пустыми местами в C усекается
int main()
{
int count=0;
char word[20];
printf("Please enter a sting: ");
scanf("%s", word);
while (word[count]!= '\0')
{
printf ("%c",word[count]) ;
count++;
}
printf ("\nCharacter count :%i\n", count);
}
Выход:
Please enter a sting: Words
Words
Character count :5
Press any key to continue.
Почему счетчик должен быть '20', если вход 5-долго, опять? 'scanf' прервет введенные 5 символов с помощью' \ 0', а не пробелов. –
'scanf ("% s ", word);' пропускает ведущие пробелы и останавливается в следующих пробелах. Время, чтобы прочитать страницу руководства? Это не компилятор, это поведение кода во время выполнения. Определенная длина строки - это только * доступное * пространство, которое будет переполнено, если вы введете что-нибудь дольше. –
@EugeneSh. Becuase Я объявил, что строка имеет длину 20, а входной - 5, поэтому должно быть всего 20. – Fenomatik