C错误:退出非零状态

时间:2018-02-13 17:26:59

标签: 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;

} 

1 个答案:

答案 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