你好我每个人都写过代码
char sentence[100];
scanf("%s" ,sentence);
char * ptrs = sentence ;
printf("%d", strlen(ptrs));
假设我输入
john is a boy
strlen()
函数给我值4,它在空格后停止计算我应该做什么
感谢
答案 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就证明这是错误的。