为什么C代码会产生总线错误?

时间:2016-03-03 02:22:07

标签: c

以下代码用于反转C样式String.But当我运行此代码时,

它产生错误:

  

[1] 42496总线错误./a.out

我不知道如何解决这个问题。请你帮助我好吗?谢谢你

推进:)

  #include <stdio.h>
  void reverse(char * str){
           char * end = str;
           char tmp;
           if(str){
               while(*end){
                   ++end;
               }
              --end;
              while(str<end){
                  tmp = *str;
                  *str++ = *end;
                  *end-- = tmp;
              }
          }
  }
  int main(){
      char * str = "abcd";
      reverse(str);
      printf("%s\n",str);
  }

2 个答案:

答案 0 :(得分:4)

 char * str = "abcd";

这是string literal,您无法对其进行修改。这是一个常数。在函数reverse中,您尝试修改它,因此会出现错误。

而是声明这样 -

 char str[] = "abcd";

Output

答案 1 :(得分:0)

输入list -l并检查文件权限。 顺便说一句,使用gcc

在我的Windows机器上编译和运行