#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';
}
このプログラムは私にセグフォルトを与えました.gdbでデバッグしようとしました. エラーは 25 行目 (すなわち) にあります。 s1[k++]=s1[i];
Javaで同じ関数を実行してみました。驚くべきことに、それはうまく機能していました。ポインターを配列に置き換え、ルーパーが配列の長さと等しいときにループを終了しました。ありがとう