[英]C error: Exited with non-zero status
我知道这段代码很简单; 但该消息不会停止出现,您能帮我找出错误所在吗?
#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
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.