文字列を入力したのち、ある1文字を入力してそれが文字列内にあるかどうかを調べる関数を作ろうとしています。
おそらく関数のほうは何とかなったと思うのですが、『ある1文字を入力』する際に、getchar関数を呼びだしてもうまくいかず
いろいろいじっていたら同じものを2つ並べることで(見た目は)動くようになってしまいました。(38-39行目)
同じのを2つ並べる前は入力ストリームが出てきませんでした。
どうしてこういうことになってしまったかが知りたいです。よろしくお願いします。
#include <stdio.h>
/* 文字cがあればその配列の添え字を返す、なければ-1を返す関数 */
int str_char(const char str[], int c){
int i = 0 ;
while (1)
{
if( str[i] == c)
{
return (i);
}
if( str[i] == '\0')
{
return (-1);
}
i++;
}
}
int main(void)
{
char read[40] ;
int word ;
printf( "40文字以内の半角文字でなんか書いてね\n入力欄→:" );
scanf( "%s",read );
printf( "はいはい、%sですねーっと。\n",read );
printf( "\nその中に特定の文字があるか調べますよー。何にします?\n" );
word = getchar();
word = getchar(); /* なぜかこいつを二回入れると動くの。なんでなのさ(#-ω-) */
putchar(word);
printf( "ですね、了解。\n");
printf( "えーっと、そいつの添え字は[%d]っすね。\n", str_char( read, word));
return (0);
}