###前提
書籍で勉強している学生です。
書籍の解答がないため問題のヒントや解説をしていただけると嬉しいです。
###問題
文字列s内のすべての数字文字を削除する関数を作成せよ。
lang
1void del_digit (char s[]) {/* ... */}
例えば、"AB1C9"を受け取ったら、"ABC"に更新する。
###該当のソースコード
lang
1#include <stdio.h> 2#include <ctype.h> 3 4#define NUMBER 100 //要素数の最大値 5 6void del_digit (char s[]) 7{ 8 int i = 0; 9 int OS[NUMBER]; //大文字に変換 10 int KS[NUMBER]; //小文字に変換 11 while(s[i]){ 12 OS[i] = toupper(s[i]); 13 KS[i] = tolower(s[i]); 14 15 if(OS[i] == KS[i]){ 16 s[i] = '\0'; 17 } 18 i++; 19 } 20} 21
###疑問点
削除すると言うことで'\0'を代入したのですが、
実行してみると、"AB1C9"が"AB"となっていました。
これは、削除と言うのでしょうか。
このままだと、文字列とは言えない気がします。
また、よりよい数字文字の判定方法があると思うので教えていただきたいです。
###補足情報
書籍: 新明解C言語 入門編
演習 9-10
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/27 22:33
2017/12/27 23:02
2017/12/27 23:55
2017/12/28 13:01
2017/12/28 14:13
2017/12/28 14:22