c
1#include <stdio.h> 2 3void delnum(char s[]) 4{ 5 int i = 0; 6 int j; 7 while (s[i]) { 8 if ('0' <= s[i] && s[i] <= '9') { 9 s[i] = s[i+1]; 10 for (j = i+1; !('0' <= s[j] && s[j] <= '9'); j++) { 11 s[j] = s[j+1]; 12 } 13 } 14 i++; 15 } 16/* いい線いってると思うけど・・・ */ 17} 18 19int main(void) 20{ 21 char str[] = "3Hello2Wo1ld9!"; 22 printf("%s\n", str); 23 delnum(str); 24 puts("チェーーーンジ!!!"); 25 printf("%s\n", str); 26 return 0; 27} 28
/* 結果 */ 3Hello2Wo1ld9! チェーーーンジ!!! Hello2Wo1ld9! /* 数字文字が最初しか消えていない?! */ Abort trap: 6 /* エラー? */
delnumのfor文が間違っているのだろうなと思いますが、どうすればいいのかわかりません。
どのようにすれば、文字列の中の数字文字を削除できますか?
3Hello2Wo1ld9! /* これを */ ↓ HelloWold! /* にしたい */
ソースコードと解説をください。
よろしくお願いします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。