StackOverflow でそれに関する多くの質問を見てきましたが、おそらく私が C プログラミングの初心者であるため、回答を読んでもわかりませんでした。コードは次のとおりです。
#include <stdio.h>
char* squeeze(char s[], char c);
main()
{
printf("%s", squeeze("hello", 'o'));
}
char* squeeze(char s[], char c)
{
int i, j;
for(i = j = 0; s[i] != '\0'; i++)
if(s[i] != c)
s[j++] = s[i];
s[j] = '\0';
return s;
}
コンパイルされ、実行するとセグメンテーション違反が発生します。配列を返すことについてこのよくある質問を読み、そこで提案されている「静的」手法を試しましたが、それでもプログラムを機能させることができませんでした。何が問題なのか、今後何に注意する必要があるのか を誰かが正確に指摘できますか?