c言語は初心者で、今テキストを見ながら進めています。
下記のプログラムは読み込んだ英文字以降の文字列を表示するプログラムです。
#include <stdio.h>
char *str_chr(const char *str, int c);
int main(void)
{
char str[10], *p;
char uletter[/url] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
printf("英大文字を入力してください:");
scanf("%s", str);
p = str_chr(uletter, str[0]);
if (p != NULL) {
puts(p);
}
return 0;
}
char *str_chr(const char *str, int c)
{
for ( ; *str; str++) {
if (*str == c) {
return ((char *)str);
}
}
return (NULL);
}
・for ( ; *str; str++)は想像的に文字列の先頭文字を走査していると(?)思うんですけど、これはfor (i = 0; *str != '\0'; i++) と解釈してもよろしいのでしょうか?でも、その場合
だとint i;が宣言されていないですよね…?
・return ((char *)str);
これは一致した英大文字のアドレスを返すということなのでしょうか?
また、その場合どうしてこのような式になるのでしょうか?
よろしければ、アドバイスをお願いします。