如何修改C语言代码,统计字符串长度时忽略空格并筛选偶数长度输入
问题分析与代码修改
原代码的目标是输出有效字符数(忽略空格)为偶数的输入行,但当前实现存在两处关键问题:
while (fgets(...)) != 0);末尾的分号导致循环仅执行一次,最终只处理最后一行输入- 使用
strlen统计长度时会包含空格,不符合“忽略空格统计字符数”的需求
修改后的代码
#include <stdio.h> #include <string.h> int main(void) { char string[1024]; // 逐行读取输入内容 while (fgets(string, sizeof(string), stdin) != NULL) { int valid_count = 0; int idx = 0; // 遍历字符串,仅统计非空格、非换行的有效字符 while (string[idx] != '\0') { if (string[idx] != ' ' && string[idx] != '\n') { valid_count++; } idx++; } // 有效字符数为偶数时,输出整行内容 if (valid_count % 2 == 0) { printf("%s", string); } } return 0; }
关键修改说明
- 移除了原while循环末尾的多余分号,确保每一行输入都能被循环处理
- 新增逐字符遍历逻辑,明确跳过空格(
' ')和换行符('\n'),只统计符合要求的有效字符数量 - 保留原需求的输出逻辑:仅当有效字符数为偶数时,输出整行输入内容
内容的提问来源于stack exchange,提问作者Dunkle Nacht
相关产品推荐
相关产品推荐

