Cの絵本に書かれていたサンプルコードなのですが、 printf("%d文字列目で発見しました。\n", p-s+1);のp-s+1の部分がわかりません。pは、ポインタで後々にp++;がされていることからs[]の文字数ー現在のポインタの位置数であるpを引いて+1なら理解できるのですが(s-p+1)、なぜ(p-s+1)とやれば正しい結果が返ってくるのでしょうか?
C
1#include <stdio.h> 2 3main() { 4 char s[] = "I love cat and dog."; 5 char c = 'a'; 6 char *p = s; 7 int n = 0; 8 9 printf("%sの中から%cを探します\n", s, c); 10 while(*p != '\0') { 11 if(*p == c) { 12 printf("%d文字列目で発見しました。\n", p-s+1); 13 n++; 14 } 15 p++; 16 } 17 if(n == 0) 18 printf("1つも見つかりませんでした。\n"); 19 else 20 printf("全部で%d個見つかりました。\n", n); 21} 22
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/22 07:58