標準の gcc コンパイラを使用しています。文字列からスペースを削除しようとしています。しかし、次の出力が得られます。ここで何が問題なのですか?out[s2+1] = '\0' を実行しているときは機能していますが、in[s1+1] = '\0' を実行していないのはなぜですか。説明してください。
OUTPUT:
カット後 s1: Ilikerambob
カット後 s2: rambolikeI
int check_anagrams(char *in,char *out)
{
int i=0;
int s1=0,s2=0;
while(in[i]!='\0')
{
if(in[i]==' ')
{
i++;
in[s1]=in[i];
}
in[s1]=in[i];
i++;
s1++;
}
in[s1+1]='\0'; //Not working. Why?
printf("After cutting s1: %s\n",in);
i=0;
while(out[i]!='\0')
{
if(out[i]==' ')
{
i++;
out[s2]=out[i];
}
out[s2]=out[i];
i++;
s2++;
}
out[s2+1]='\0'; //Working. Why?
printf("After cutting s2: %s\n",out);
}
int main()
{
char in[100]="I like rambo";
char out[100]="rambo like I";
int ans;
ans = check_anagrams(in,out);
}