我想创建一个固定长度的空字符串,让我们说100,然后输入该字符串的用户输入,由于某种原因,当我尝试扫描字符串时,代码不会在用户输入后向我显示所有前导空格。 如果我的空字符串长度为20且输入为5个字符,则计数应为20。我在这里遗漏了一些非常基本的东西,或者编译器截断空的空格无论如何?
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.
答案 0 :(得分:1)
通常scanf("%s", word);
读取但不保存前导空格,然后将非空白字符保存到word
。然后它附加一个空字符并返回。
要阅读用户输入的行,包括空格字符,请使用fgets()
。这通常包括 Enter 或'\n'
。
char word[20]; // Or maybe 100
if (fgets(word, sizeof word, stdin)) {
while (word[count]!= '\0') {
printf("%c", word[count]);
count++;
}
printf ("\nCharacter count :%i\n", count);
}
如果我的空字符串长度为20且输入为5个字符,则计数应为20。
计数将反映最多输入 20 - 1或19的字符数。