c
1#include <stdio.h> 2 3int str_char(const char str[], int c) 4{ 5 int i = 0; 6 for(; str[i] != '\0'; i++) { 7 if(str[i] == c) 8 return i; 9 } 10 return -1; 11} 12 13int main(void) 14{ 15 char str[100]; 16 char c; 17 printf("文字列を入力してください;"); 18 scanf("%s", str); 19 printf("何を探しますか?:"); 20 scanf("%s", &c); //%sでも正しく動作してしまう。 21 printf("%d\n", str_char(str, c)); 22 23 return 0; 24}
文字列strの中に文字cが含まれていたら添字を返すようなプログラムなのですが、
%cではなく%sとしても正しく動作してしまうのはなぜでしょうか。
エラーが出てもおかしくないと思うのですが。
補足
c
1scanf("%c", &c); 2scanf("%c", &c);
のように書き換えても正しい結果が得られました。
でもあまりこのコードだと綺麗な気はしません。
もっと全体的に綺麗なコーディングがあればお教えいただきたいです。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/05 12:42
2019/06/05 14:10
2019/06/05 14:25
2019/06/05 14:40
2019/06/05 15:06 編集
2019/06/05 15:34