C语言解题
思路:
- 使用strrchr找到最右边的第一个空格,然后将指针移动到首字母。
注意:
- 获取输入时,尽量不要使用gets,有溢出风险,建议使用fgets(char *s, int n, FILE *stream);
- 使用fgets时,如果字符串长度小于n-1且结尾有换行符,则会获取换行符,并在换行符之后填充'\0',所以计算长度时需要判断是否需要减去换行符
#include <stdio.h> //printf, fgets, stdin
#include <string.h> //strrchr, strchr, strlen
int main(void)
{
char str[5000] = {0};
int length = 0;
char *p = NULL;
/* 使用fgets从标准输入(stdin)获取一行 */
fgets(str, sizeof(str), stdin);
/* 使用strrchr找到最右边的第一个空格 */
p = strrchr(str, ' ');
if (p)
p = p + 1; //指向首字母
else
p = str; //只有一个单词
/* 使用strchr查找是否存在换行符 */
if (strchr(p, '\n'))
length = strlen(p) - 1;
else
length = strlen(p);
printf("%d\n", length);
return 0;
}