#include<stdio.h> int main() { char a[50]="",max; int i=0; printf("Input character string:"); gets(a); max=a[0]; while(a[0]!='\0') { if(a[i]>max) max=a[i]; i++; } putchar(max); return 0; }这段代码哪儿有问题
时间: 2023-11-27 07:54:57 浏览: 91
#include <stdio.h>
4星 · 用户满意度95%
这段代码中存在以下问题:
1. 变量 `max` 的类型应该是 `char`,而不是 `char*`。
2. `gets()` 函数不安全,容易导致缓冲区溢出,建议使用 `fgets()` 函数代替。
3. while 循环条件应该判断 `a[i]` 是否为 `\0`,而不是 `a[0]`。
4. 在循环中没有对越界情况进行判断。
下面是修改后的代码:
```c
#include <stdio.h>
int main() {
char a[50] = "";
char max = a[0];
int i = 0;
printf("Input character string:");
fgets(a, 50, stdin);
while (a[i] != '\0' && i < 50) {
if (a[i] > max) {
max = a[i];
}
i++;
}
putchar(max);
return 0;
}
```
修改后的代码使用 `fgets()` 安全地获取用户输入,并且添加了数组越界判断。
阅读全文