※ ChatGPTを利用し、要約された質問です(原文:C言語 数字を削除する関数)
C言語で数字を削除する関数
このQ&Aのポイント
C言語で文字列から数字を削除する関数について解説します。
提供された質問文章では、文字列内の数字を削除する関数が実装されています。
具体的な処理としては、文字列内の数字を検出し、それ以外の文字を別の配列に格納することで実現されています。
#include <stdio.h>
void del_digit(char str[])
{
unsigned i = 0, count = 0;
while (str[i]) {
if(str[i] >= '0' && str[i] <= '9') {
count++;
}
else {
str[i - count] = str[i];
}
i++;
}
str[i - count] = '\0';
}
str内の全ての数字を削除する関数です。
AB1C9と入力するとABCと表示されます。
まずwhile (str[i])のとこのiは5までいくと思います。
5まで行った時にstr[5]は\0だからelseのほうに行ってstr[5- 2] = str[5];という風に処理されると思います。
その段階でstr[3]には¥0が入っていると思うのですが最後に
str[5- 2] = '\0';でまたstr[3]に\0を入れる処理をしているのはなぜなんでしょうか?
最後のstr[i - count] = '\0';を消して実行してみると
「ABCC9」と表示されてしまいます。
教えてくださいm(_ _ )m
お礼
わかりました。ありがとうございますm(_ _ )m