优化该段代码,并简化该段代码
时间: 2023-07-03 21:22:45 浏览: 84
这段代码可以进行以下优化和简化:
1. 使用fgets函数代替gets函数,避免因为输入字符超过数组长度引起的错误。
2. 在output函数中,可以不需要使用temp数组来存储提取出来的数字,而是直接在计算数字的过程中输出即可。
3. 可以使用isdigit函数来判断当前字符是否为数字字符,而不是手动判断ASCII码范围。
4. 可以将输出数字的个数和数字本身的输出合并到一起,避免输出重复。
以下是优化后的代码:
```c
#include <stdio.h>
#include <ctype.h>
void output(char *s);
int main() {
char str[30];
printf("Please enter string: ");
fgets(str, 30, stdin);
output(str);
return 0;
}
void output(char *s) {
double num = 0;
int count = 0;
while (*s != '\0') {
if (isdigit(*s)) {
num = num * 10 + (*s - '0');
} else if (num != 0) {
printf("%.0f ", num);
count++;
num = 0;
}
s++;
}
if (num != 0) {
printf("%.0f ", num);
count++;
}
printf("\nThere is %d number in the string.\n", count);
}
```
优化后的代码更加简洁清晰,同时避免了可能引起的错误。
阅读全文