关注
您的代码主要目的是从用户输入的一行文本中找出最后一个空格后面的字符串(包括空格后无其他字符即整行文本的情况),并计算这部分字符串的长度(不包括末尾的换行符,如果存在的话)。代码基本正确,但有几个地方可以优化或明确其意图:
注释和变量命名:注释和变量命名已经相对清晰,但可以在p = p + 1;后添加注释说明p现在指向第一个字符。
换行符处理:在处理换行符时,您已经正确地检查了换行符的存在并相应地减少了长度。这是正确的做法,因为fgets会将换行符(如果有的话)存储在字符串中。
边界情况处理:当输入为空行时,strrchr将返回NULL,此时p已经是str,即指向字符串的开始。您已经处理了这种情况,很好。
代码整洁性:可以稍微调整代码结构,使其更加紧凑和易于理解。
以下是优化后的代码示例:
c
#include <stdio.h>
(30951)#include <string.h>
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++;
} else {
// 如果没有空格,则整个字符串作为目标
p = str;
}
// 使用strchr查找是否存在换行符
if (strchr(p, '\n')) {
// 如果存在换行符,则计算长度时不包括它
length = strlen(p) - 1;
} else {
// 如果没有换行符或字符串以换行符结束但p在换行符之前,则直接使用strlen
length = strlen(p);
}
// 输出结果
printf("%d\n", length);
return 0;
}
这个版本的代码与原始版本在功能上相同,但通过对变量p的更新和注释的添加,使得代码更加易于理解和维护。同时,它保持了原始代码的效率和正确性。
点赞
相关推荐
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 春招 / 实习投递,你最焦虑的一件事 #
3742次浏览 53人参与
# HR问:你期望的薪资是多少?如何回答 #
80010次浏览 677人参与
# 神州信息求职进展汇总 #
4638次浏览 74人参与
# 今年找实习到底有多难? #
2361次浏览 31人参与
# 27届求职交流 #
19686次浏览 399人参与
# 哪一刻你对工作祛魅了? #
1405次浏览 21人参与
# 26届求职交流 #
9886次浏览 252人参与
# 工作丧失热情的瞬间 #
366678次浏览 2557人参与
# 快手求职进展汇总 #
737568次浏览 7115人参与
# 双非能在秋招上岸吗? #
378199次浏览 1875人参与
# 国企/银行/研究所公司爆料 #
195120次浏览 900人参与
# 三月的小目标 #
30173次浏览 568人参与
# 听劝,这个公司值得去吗 #
678690次浏览 2000人参与
# 交出你的校招焚诀 #
21560次浏览 327人参与
# 面试___岗的必刷题单 #
24045次浏览 429人参与
# 哪些公司开暑期实习了? #
39444次浏览 315人参与
# 面试中,你被问过哪些奇葩问题? #
89067次浏览 850人参与
# 你觉得mentor喜欢什么样的实习生 #
51775次浏览 1009人参与
# 求职遇到的搞笑事件 #
165279次浏览 902人参与
# 24秋招避雷总结 #
953824次浏览 7052人参与
# 汇川技术求职进展汇总 #
183506次浏览 1060人参与