C错误:以非零状态退出

  • 本文关键字:状态 退出 错误 c
  • 更新时间 :
  • 英文 :


我知道这个代码很简单;但是该消息不会停止出现,您能帮我找到错误的位置吗?

#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

最新更新