1
文字列s1
の各文字を文字列s2
に一致する文字を削除しようとしています。他の文字列内の任意の文字に一致する文字列の文字を削除します。
私がコンパイルすると、何かエラーがあるとは言わないが何らかの理由で何も表示されない。誰かが私がここで間違ってやっていることを教えてもらえますか?
void squeeze(char s1[], char s2[]);
int main() {
char s1[] = "abc";
char s2[] = "cde";
squeeze(s1, s2);
printf("%s\t%s", s1, s2); // nothing is being printed...
}
void squeeze(char s1[], char s2[])
{
int i,j,k;
/* i is original s1 index
* j is s2 index
* k is new s1 index
*/
for (i = k = 0; s1[i] != '0'; i++){
for (j = 0; s2[j] != '0'; j++){
if (s1[i] == s2[j])
s1[k++] = s1[i];
}
}
s1[k] = '\0';
}
'!= '\ 0''はあなたが意図したものです。 '' 0 ''はヌルターミネータではなく数字のゼロです。 – user3386109
私は ''0 ''の代わりに' '0 ''をループ内で使うつもりです。あなたのプログラムはおそらくクラッシュしています。 –
トリックをしてくれてありがとうございました:) – ALKI