我知道这段代码非常简单;但是这条消息不会停止出现,你能帮我找到错误的位置吗?
#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;
}
答案 0 :(得分:1)
fn.stringJoin
返回gets
。 在此上下文中 - 在函数定义中编写char*
是错误的,您应该通过char *[]
数组传递使用char
存储输入字符的数组。另外gets
- 您需要将缓冲区传递到将存储输入字母的char *gets(char *str)
。你没有通过一个。
gets
在这里不起作用。它返回指针的大小(sizeof
)。您必须使用char*
来获取strlen()
输入的字符串的长度。
更重要的是 - 不要使用gets
- 是时候使用比gets
更安全的东西,即gets
等。缓冲区溢出不是你想要处理的东西。< / p>
假设您将fgets
数组传递给函数char*
。那么参数将是reverse
,这意味着除char*[]
之外的其他内容。在这里,您只需将您将用作缓冲区的char**
数组传递给char
。