我知道这个代码很简单;但是该消息不会停止出现,您能帮我找到错误的位置吗?
#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 *[]
是错误的,其中据称您传递了使用gets
存储输入字符的char
数组。另外,char *gets(char *str)
-您需要将缓冲区传递到将存储输入字母的gets
。你没有通过一个。
sizeof
在这里不起作用。它返回指针的大小(char*
(。您将必须使用strlen()
来获取由gets
输入的字符串的长度。
更重要的是 - 不要使用gets
-是时候使用比gets
更安全的东西了,即fgets
等。缓冲区溢出不是您想要处理的。
假设您将char*
的数组传递给函数reverse
。然后,参数将是char*[]
,这意味着此处的char**
。在这里,您只需通过char
阵列将其用作缓冲区的数组到gets
。