我知道这段代码非常简单;但该消息不会停止出现,您能帮我找到错误所在吗?
#include <stdio.h>
void Reverse(char * word[]) {
char temp = word[0];
for (int i = sizeof(word); i >= 0; i--){
for (int j = 0; j<= sizeof(word); j ++){
word[0] = word[i];
}
}
word[sizeof(word)] = temp;
printf("%s", word);
}
void main() {
Reverse(gets(stdin));
return 0;
}
最佳答案
gets
返回char*
。 在此上下文中 - 在函数定义中编写 char *[]
是错误的,您应该在函数定义中传递一个 char
数组,其中输入字符是使用gets
进行存储。另外,char *gets(char *str)
- 您需要将一个缓冲区传递给gets
,其中将存储输入的字母。你没有通过一项。
sizeof
在这里不起作用。它返回指针的大小 (char*
)。您必须使用 strlen()
来获取 gets
输入的字符串的长度。
更重要的是 - 不要使用 gets
- 是时候使用比 gets
更安全的东西了,即 fgets
等。缓冲区溢出是这不是您想要处理的事情。
假设您将一个 char*
数组传递给函数 reverse
。那么参数将是 char*[]
这意味着这里除了 char**
之外什么也没有。在这里,您只需将用作缓冲区的 char
数组传递给 gets
。
关于C错误: Exited with non-zero status,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48772397/