繁体   English   中英

C 错误:以非零状态退出

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM