[英]strlen function giving wrong value
你好我每个人都写过代码
char sentence[100];
scanf("%s" ,sentence);
char * ptrs = sentence ;
printf("%d", strlen(ptrs));
假设我进入
john is a boy
strlen()
函数给我值4它在空格后停止计数我应该做什么谢谢
那个scanf只能读一个单词,如果你做printf
你会看到它。 因此strlen
没有任何问题。
使用读取整行的fgets
:
if (! fgets(sentence, sizeof(sentence), stdin)) {
fprintf(stderr, "error or end of file while no characters have been read\n");
return;
}
scanf("%s" ,sentence);
这只会读取一个字符串直到下一个空格。 这意味着,剩下的字符,因此约翰之后的单词不被读取。
要获得所需的输出,请改用gets()。
gets(sentence);
fgets()而不是scanf()。
scanf()将输入作为单词的结尾。
调试技巧:
您应该能够在某种程度上自行调试。 当strlen()没有给出正确的答案时,首先要做的是验证你的假设。 你假设句子/ ptrs有正确的值。 一个简单的printf就证明它是错误的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.