C言語の文字列について
Posted: 2009年2月16日(月) 14:32
すいません、どなたか教えていただけないでしょうか
文字列str内の全ての数字文字を削除する関数void del_digit(char str[/url])を使うんですけど、
この呼び出された関数del_digitのstrとmain関数のstrは別個のものですよね。それなのにdel_digit関数
の処理が終わったあとmain関数に戻ったら配列strの中身が変わっています。
あと、str[idx++] = strはどういう意味なのでしょうか?
この0未満、9以上はどういう意味なのでしょうか?
よろしければ、教えてください。
#include <stdio.h>
void del_digit(char str[/url]);
int main(void)
{
char str[100];
printf("文字列を入力してください:");
scanf("%s", str);
del_digit(str);
puts("数文字を削除しました。");
printf("str=%s\n", str);
return 0;
}
void del_digit(char str[/url])
{
int i = 0, idx = 0;
while (str) {
if(str < '0' || str > '9') {
str[idx++] = str;
}
i++;
}
str[idx] = '\0';
}
文字列str内の全ての数字文字を削除する関数void del_digit(char str[/url])を使うんですけど、
この呼び出された関数del_digitのstrとmain関数のstrは別個のものですよね。それなのにdel_digit関数
の処理が終わったあとmain関数に戻ったら配列strの中身が変わっています。
あと、str[idx++] = strはどういう意味なのでしょうか?
この0未満、9以上はどういう意味なのでしょうか?
よろしければ、教えてください。
#include <stdio.h>
void del_digit(char str[/url]);
int main(void)
{
char str[100];
printf("文字列を入力してください:");
scanf("%s", str);
del_digit(str);
puts("数文字を削除しました。");
printf("str=%s\n", str);
return 0;
}
void del_digit(char str[/url])
{
int i = 0, idx = 0;
while (str) {
if(str < '0' || str > '9') {
str[idx++] = str;
}
i++;
}
str[idx] = '\0';
}