以下プログラムは、『解きながら学ぶC言語』のp206ページから抜粋したものです。
本プログラムは、文字列strの中に、文字cが含まれていれば配列の添字をを返し、含まれていなければ-1を返すプログラムです。
3点質問があります。質問の該当箇所には、コメントを記載しています。
1.仮引数の戻り値にintを指定していますが、なぜ呼び出し側は、ch[0]を実引数として記述しているのか?
ch[0]はchar型では?
2."ABCDEFGHIJKLMNOPQRSTUVWXYZ" は,添字0〜25
"abcdefghijklmnopqrstuvwxyz"は、添字265152ではないのか?
とのことだが、二重引用符で区切られているため、添字は27
#include <stdio.h> /*--- 文字列strから文字cを検索し、最も先頭側の要素の添字を返す ---*/ int str_char(const char str[], int c) //質問1 { int i; for (i = 0; str[i] != '\0'; i++) if (str[i] == c) return (i); return (-1); } int main(void) { int no; char ch[10]; printf("英文字を入力してください:"); scanf("%s", ch); no = str_char("ABCDEFGHIJKLMNOPQRSTUVWXYZ" "abcdefghijklmnopqrstuvwxyz", ch[0]);//質問2 if (no >= 0 && no <= 25) printf("それは英大文字の%d番目です。\n", no + 1); else if (no >= 26 && no <= 51) printf("それは英小文字の%d番目です。\n", no - 25); else printf("それは英文字ではありません。\n"); return (0); }
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。