用fget优化下面这段代码:#include <stdio.h> #include <ctype.h> int main() { int letter = 0, digit = 0, space = 0, other = 0; char c; while ((c = getchar()) != '\n') { if (isalpha(c)) { letter++; } else if (isdigit(c)) { digit++; } else if (isspace(c)) { space++; } else { other++; } } printf("%d %d %d %d", letter, digit, space, other); return 0; }
时间: 2024-01-16 15:03:01 浏览: 323
可以使用fgets函数代替getchar函数,fgets函数可以一次读取一行,因此可以避免getchar函数的循环读取,从而优化代码。下面是使用fgets函数优化的代码:
```c
#include <stdio.h>
#include <ctype.h>
int main() {
int count[4] = {0}; // 字符计数数组
char line[1024];
fgets(line, 1024, stdin); // 从标准输入读取一行
for (int i = 0; line[i] != '\n'; i++) {
switch(line[i]) {
case ' ':
count[0]++; // 空格计数
break;
case '\t':
count[1]++; // 制表符计数
break;
case '\n':
count[2]++; // 换行符计数
break;
default:
count[3]++; // 其他字符计数
break;
}
}
printf("空格:%d,制表符:%d,换行符:%d,其他字符:%d\n", count[0], count[1], count[2], count[3]);
return 0;
}
```
优化后的代码通过fgets函数一次读取一行,然后利用for循环逐个字符遍历并统计字符类型。
阅读全文