挤压功能中的错误,以消除字符串之间的常见字符

时间:2013-09-25 01:45:00

标签: c

#include<stdio.h>
void squeeze(char *s1,char *s2);

main()
{
    char *s1="string";
    char *s2="spring";
    squeeze(s1,s2);
    printf("%s",s1);
}

void squeeze(char *s1,char *s2)
{
    int i=0,j=0,k=0,bool=1;
    for(i=0,k=0;s1[i]!='\0';i++)
    {
      for(j=0;s2[j]!='\0';j++)
        if(s1[i]==s2[j])
        {
           bool=0;
           break;
        }
     if(bool)
     {
         s1[k++]=s1[i];
     }
     bool=1;
    }
    s1[k]='\0';
}

这个程序给了我一个seg fault.i尝试用gdb调试它。错误在第25行 (即)s1[k++]=s1[i];

我尝试在java中运行相同的功能。令人惊讶的是它运行良好。我用数组替换了指针,当looper等于数组长度时退出循环。但是它不能用于c 有什么建议?感谢

1 个答案:

答案 0 :(得分:1)

您正在尝试修改字符串文字。字符串文字是C中的常量只读字符串。您无法以任何方式更改它。尝试将字符串声明为char数组。

char s1[] = "string";
char s2[] = "spring";