为什么这个简单的程序会出现“总线错误”?

时间:2016-07-01 22:39:23

标签: c

#include <stdio.h>

void squeeze(char s[], int c)
{
int i, j;
for(i = j = 0; s[i]!= '\0'; i++)
{       
    if (s[i] != c)
    {
        s[j++] = s[i];
    }
}   
s[j] = '\0';
printf("%s\n", s);
}


int main(void)
{
squeeze("asfafsdfsaaaasdfsd", 'a');
}

我在mac中运行此程序,看起来问题来自于该行: s [j ++] = s [i]

但我不知道为什么。

谢谢!

1 个答案:

答案 0 :(得分:1)

因为字符串文字是只读的。要制作可写的字符数组,请尝试使用

int main( void )
{
    char array[] = "asfafsdfsaaaasdfsd";
    squeeze( array, 'a' );
}