
因为他只要求输入一行,只要求最后一个单词的长度,可以利用scanf遇到空格会中断读取标准输入的特性,简化编写,件最下面一个代码块。
#include <stdio.h>
#include <string.h>
int main(int argc, char **argv)
{
char str[5000] = {0};
int len = 0;
char *p = NULL;
char a;
int i = 0;
while(scanf("%c", &a) != EOF)
{
if(a)
{
str[i] = a;
i++;
}
else
{
break;
}
}
//printf("%s\n", str);
// 找到子串中最后一个字符所在的位置,若没有该字符则返回NULL
p = strrchr(str, ' ');
if(p)
{
p++;
// 减1 是因为输入时附带了一个换行符
printf("%d\n", strlen(p)-1);
}
else
{
printf("%d\n", strlen(str)-1);
}
return 0;
}
注意此题输入中含有空格,不可能以整个字符串来输入,空格会被转化成换行,只能以单个字符来输入、解析。
#include <stdio.h>
#include <string.h>
int main(void)
{
char a[5000] = {0};
int cnt;
while(scanf("%s", a) != EOF)
{
cnt = strlen(a);
memset(a, 0, sizeof(a));
}
printf("%d\n", cnt);
return 0;
}
本文介绍了如何利用C语言的`scanf`和`strrchr`函数,仅通过一行输入获取并计算字符串中最后一个单词的长度,避免了整个字符串的输入。这种方法巧妙地利用了空格作为分隔符的特点。
1595

被折叠的 条评论
为什么被折叠?



