C 语言代码改进:处理边界情况,确保多输入场景正确运行,附未通过测试分析建议
以下是对上一次代码的改进,重点处理了一些边界情况,确保程序在各种输入下都能正确运行。 ```c #include <stdio.h> #include <string.h> #include <ctype.h> // 将字符串转换为小写 void toLowerCase(char *str) { for (int i = 0; str[i]; i++) { str[i] = tolower(str[i]); } } int main() { char word[100], article[1000000]; // 读取要查找的单词 scanf("%s", word); // 消耗掉scanf后的换行符 getchar(); // 读取文章内容 fgets(article, sizeof(article), stdin); // 去掉fgets可能读取的换行符 article[strcspn(article, "\n")] = 0; // 将单词和文章都转换为小写,以实现不区分大小写的匹配 toLowerCase(word); toLowerCase(article); int wordLen = strlen(word); int count = 0; int firstPos = -1; int pos = 0; while (article[pos]) { // 跳过前导空格 while (article[pos] == ' ') { pos++; } // 如果到达字符串末尾则结束循环 if (!article[pos]) { break; } // 检查是否匹配目标单词 if (strncmp(article + pos, word, wordLen) == 0) { // 检查是否为独立单词 if (article[pos + wordLen] == ' ' || article[pos + wordLen] == '\0') { if (count == 0) { firstPos = pos; } count++; } } // 移动到下一个单词起始位置 while (article[pos] && article[pos] != ' ') { pos++; } } if (count > 0) { printf("%d %d\n", count, firstPos); } else { printf("-1\n"); } return 0; } ``` 改进点解释 1. 跳过前导空格:在遍历文章时,首先跳过前导空格,避免在空格处进行不必要的比较。 2. 移动到下一个单词起始位置:当比较完一个可能的单词后,跳过该单词剩余部分,直接移动到下一个单词的起始位置,提高效率。 3. 边界检查:在每次比较之前,检查是否到达字符串末尾,避免越界访问。 这些改进可以确保代码在处理各种输入时更加健壮,避免因边界情况导致的错误。如果还有测试点未通过,请提供具体的测试用例,以便进一步分析。 ######[AI问答 | 649点数解答 | 2025-12-15 17:29:05]
- Python实现多个整数相乘的计算及开发建议(字节豆包 | 427点数解答 | 2026-02-25 19:25:10)8
- PyCharm 中用 Selenium 编写自动化测试脚本,轻松登录 eShop 测试平台并点击“我的订单”(字节豆包 | 304点数解答 | 2024-11-06 15:38:30)426
- CentOS下Java进程出现futex_wait_queue_me问题的处理全流程(阿里通义 | 283点数解答 | 2023-11-20 14:51:26)448
- 替雷利珠单抗致免疫相关性糖尿病:病例报道与机制探讨,为临床用药敲响警钟( | 164点数解答 | 2024-10-11 14:52:52)254
- C++实现矩阵类:重载运算符+与=,含构造、析构及异常处理(字节豆包 | 671点数解答 | 2025-06-23 15:25:09)220
- C++ 实现矩阵类:重载运算符加与赋值,含构造、析构及错误处理(字节豆包 | 993点数解答 | 2025-06-23 15:27:43)148
- jQuery与Zepto大比拼:区别解析与使用场景揭秘(阿里通义 | 215点数解答 | 2023-11-09 01:16:19)258
- 代码揭秘:模拟蛟龙号海底移动的 3D 场景创建全解析(DeepSeek | 506点数解答 | 2025-02-22 14:23:57)221
- 优化指南:让网页3D汽车模型更生动、更适配!(DeepSeek | 489点数解答 | 2025-03-06 03:08:58)229
- 数据深度剖析:城市数量、学历占比、发布时间及工作大类统计分析(GPT | 704点数解答 | 2024-06-30 15:54:38)314
- Java 实现:轻松生成 5 位数字、大小写字母混合验证码( | 266点数解答 | 2024-03-06 17:39:10)321
- 深度剖析:游戏中两个 Buff 效果的触发条件、逻辑及注意要点 (阿里通义 | 566点数解答 | 2024-11-26 14:24:12)248