strlen函数给出错误的值

时间:2011-10-10 08:22:42

标签: c arrays strlen

你好我每个人都写过代码

char sentence[100]; 
scanf("%s" ,sentence); 
char * ptrs = sentence ;
printf("%d", strlen(ptrs));

假设我输入

john is a boy

strlen()函数给我值4,它在空格后停止计算我应该做什么 感谢

3 个答案:

答案 0 :(得分:9)

如果你执行printf,你会看到它只扫描一个单词。所以strlen没有错。

使用fgets读取整行:

if (! fgets(sentence, sizeof(sentence), stdin)) {
   fprintf(stderr, "error or end  of file while no characters have been read\n");
   return;
}

答案 1 :(得分:1)

scanf("%s" ,sentence);

这只会读取到下一个空格的字符串。这意味着,其余的字符,因此约翰之后的单词不会被阅读。

要获得所需的输出,请改用gets()。

gets(sentence);

答案 2 :(得分:1)

fgets()而不是scanf()。
scanf()将输入带到单词的末尾。

调试提示:

您应该可以在某种程度上自行调试。当strlen()没有给出正确的答案时,首先要做的是验证你的假设。你假设句子/ ptrs有正确的值。一个简单的printf就证明这是错误的。