2016-07-01 3 views
0
#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'); 
} 

나는 맥에서이 프로그램을 실행하고 문제가 라인에서 오는 것 같습니다 : 의 [J ++] = s의 [I]이 간단한 프로그램이 왜 "버스 오류"를 유발합니까?

하지만 난 이유를 모르겠어.

감사합니다!

+4

문자열 리터럴에 쓰려고합니다. –

답변

1

문자열 리터럴은 읽기 전용이므로. 쓰기 가능한 문자 배열을 만들려면 다음을 입력하십시오.

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