#include<stdio.h> int main() { char a[10]; printf("input a char!\n"); gets(a); int i,n; n = sizeof(a)/sizeof(char); for(i = 0;i<n;i++) { printf("%c",a[n-1-i]); } return 0; }哪里不对
时间: 2024-03-25 15:40:28 浏览: 23
您的代码看起来已经可以正常工作了。如果您输入的字符数小于10,则输出结果可能不太对(因为数组中可能包含未初始化的元素)。如果您想要输出与输入相同长度的字符,请使用 `strlen` 函数获取输入字符串的长度,例如:
```c
#include <stdio.h>
#include <string.h>
int main() {
char a[10];
printf("input a char!\n");
gets(a);
int i, n;
n = strlen(a);
for (i = 0; i < n; i++) {
printf("%c", a[n-1-i]);
}
return 0;
}
```
请注意,`gets()` 函数已被弃用,因为它不安全。建议使用 `fgets()` 函数代替,例如:
```c
#include <stdio.h>
#include <string.h>
int main() {
char a[10];
printf("input a char!\n");
fgets(a, 10, stdin);
int i, n;
n = strlen(a);
for (i = 0; i < n-1; i++) { // 忽略字符串末尾的换行符
printf("%c", a[n-2-i]);
}
return 0;
}
```
相关问题
#include<stdio.h> int main() { char a[10]; printf("input a char!\n"); gets(a); int i,n; n = sizeof(a)/sizeof(char); for(i = 0;i<n;i++) { printf("%s",a[n-i]); } return 0; }哪里有问题
在输出时,您应该使用 `%c` 而不是 `%s`,因为您要输出单个字符,而不是字符串。此外,您的输出循环中的索引应该从 `n-1` 开始,而不是从 `n` 开始。因此,您的代码应该修改为:
```c
#include <stdio.h>
int main() {
char a[10];
printf("input a char!\n");
gets(a);
int i, n;
n = sizeof(a) / sizeof(char);
for (i = 0; i < n; i++) {
printf("%c", a[n-1-i]);
}
return 0;
}
```
请注意,`gets()` 函数已被弃用,因为它不安全。建议使用 `fgets()` 函数代替,例如:
```c
#include <stdio.h>
#include <string.h>
int main() {
char a[10];
printf("input a char!\n");
fgets(a, 10, stdin);
int i, n;
n = strlen(a);
for (i = 0; i < n-1; i++) { // 忽略字符串末尾的换行符
printf("%c", a[n-2-i]);
}
return 0;
}
```
#include <stdio.h> #include <stdlib.h> static char buff[256]; static char* string; int main() { printf("Please input your string:"); gets(string); printf("\nYour string is:%s\n",string); }
这段代码有一个潜在的问题,就是使用了未初始化的指针变量string作为gets函数的参数,可能会导致不可预知的结果,甚至引发程序崩溃。
建议将string指针变量初始化为一个足够大的字符数组,可以使用之前定义的静态字符数组buff来作为string的初始值,即将以下代码:
```c
static char buff[256];
static char* string;
```
修改为:
```c
static char buff[256];
static char* string = buff;
```
另外,gets函数存在缓冲区溢出的安全问题,应该使用更加安全的函数fgets来代替gets函数。修改后的代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
static char buff[256];
static char* string = buff;
int main() {
printf("Please input your string:");
fgets(string, 256, stdin);
printf("\nYour string is:%s\n",string);
return 0;
}
```
相关推荐
![text/x-c](https://img-home.csdnimg.cn/images/20210720083646.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)