C错误: Exited with non-zero status

标签 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 *[] 是错误的,您应该在函数定义中传递一个 char 数组,其中输入字符是使用gets 进行存储。另外,char *gets(char *str) - 您需要将一个缓冲区传递给gets,其中将存储输入的字母。你没有通过一项。

sizeof 在这里不起作用。它返回指针的大小 (char*)。您必须使用 strlen() 来获取 gets 输入的字符串的长度。

更重要的是 - 不要使用 gets - 是时候使用比 gets 更安全的东西了,即 fgets 等。缓冲区溢出是这不是您想要处理的事情。

假设您将一个 char* 数组传递给函数 reverse。那么参数将是 char*[] 这意味着这里除了 char** 之外什么也没有。在这里,您只需将用作缓冲区的 char 数组传递给 gets

关于C错误: Exited with non-zero status,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48772397/

相关文章:

c - 使用 malloc 分配字符串

c - 在 C 中,如何连接不同 long 的部分?

iphone - 我在作业中得到不兼容的类型?

c - 如何将 PFS 添加到用 c 和 openssl 编写的套接字服务器

c - Vulkan API 和 C - 查询物理设备属性导致段错误

c - C 有标准的 Queue 实现吗?

c - 如何在linux c程序中获取pthread的线程ID?

c - 函数不会返回 0,找不到逻辑错误

c - 如何阻止此代码卡在错误的输入上?

无法将 char 数组分配给我的结构数组的第三个槽