我正在尝试设置一个代码来计算整个字符串,并且在它找到的第一个空格后不会停止.我怎么做?
我试过这种代码,但它只计算第一个单词,然后显示第一个单词中的字母数.
到目前为止,这是我尝试过的.
int main(){
char get[100];
int i, space=0, len=0, tot;
scanf("%s", get);
for (i=0; get[i]!='\0'; i++)
{
if (get[i] == ' ')
space++;
else
len++;
}
tot = space + len;
printf("%i", tot);
}
Run Code Online (Sandbox Code Playgroud)
和
int main(){
char get[100];
int len;
scanf("%s", &get);
len = strlen(get);
printf("%i", len);
}
Run Code Online (Sandbox Code Playgroud)
但仍然会得到与第一个相同的答案.
我期待如果输入:狐狸很华丽.输出:19
但我得到的只是输入:狐狸很华丽.输出:3
strlen已经包含空格,因为它计算字符串的长度直到终止NUL字符(零'\0').
你的问题是当遇到空格时停止读取的%s转换scanf,所以你的字符串从未包含在它的第一位(你可以通过打印出字符串来轻松验证).(您可以通过使用不同的scanf转换来修复它,但通常通过读取更容易使事情正确fgets- 它还会强制您指定缓冲区大小,修复当前代码中潜在的缓冲区溢出.)