#include<stdio.h> #include<string.h> int main(void) { int i; char str[10]; gets(str); for(i=0;str[i];i++) for(i--;i>0;i--) printf("%c",str[i]); return 0; }哪里有错?
时间: 2024-01-22 16:04:07 浏览: 86
#include <stdio.h>
4星 · 用户满意度95%
这段代码有几个问题:
1. `gets()` 函数已经被废弃,因为它不安全,可以使用 `fgets()` 替代。
2. 数组 `str` 的长度只有 10,如果输入的字符串长度超过 10,就会发生缓冲区溢出。
3. 第二个 `for` 循环的初始值应该是 `i-1`,而不是 `i`。
下面是修改后的代码:
```
#include <stdio.h>
#include <string.h>
int main(void) {
int i;
char str[100];
fgets(str, 100, stdin);
for (i = strlen(str) - 1; i >= 0; i--) {
printf("%c", str[i]);
}
return 0;
}
```
在修改后的代码中,我们将数组 `str` 的长度从 10 改为 100,同时使用了 `fgets()` 函数来读取输入的字符串,避免了缓冲区溢出的问题。同时,我们修改了第二个 `for` 循环的初始值,使得字符串可以正确地反转。
阅读全文