Board logo

標題: C語言寫一個近似strchr功能 [打印本頁]

作者: haloPaul    時間: 2019-1-14 15:36     標題: C語言寫一個近似strchr功能

  1. #include <stdio.h>

  2. int main() {
  3.         char s[] = "I love cat and dog.";
  4.         char c = 'a';
  5.         char *p = s;
  6.         int n = 0;
  7.        
  8.         printf("在"%s"當中搜尋'%c\'。\n", s, c);
  9.         while (*p != '\0') {
  10.                 if (*p == c) {
  11.                         printf("出現在第%d個字元。\n", p-s+1);
  12.                         n++;
  13.                 }
  14.                 p++;
  15.         }
  16.         if (n == 0)
  17.            printf("無符合字元。\n");
  18.         else
  19.            printf("全部總共搜尋到%d個字元。\n", n);
  20.         return 0;
  21. }
複製代碼
其中第12行printf("出現在第%d個字元。\n", p-s+1);
我不太明白為何會是p-s+1呢,p-s+1是如何來的? 思考了很久還是弄不懂原理。
請C語言高手指點一二,謝謝!
作者: 燕飛    時間: 2019-1-14 16:15

人以1開始
C 以0開始

via HKEPC Reader for Android
作者: boy168    時間: 2019-1-14 16:49

用n已經可以.
char *p = s;
即係 char pointer p 指住 s[0] memory地址.
作者: chocostang    時間: 2019-1-15 10:23

array係由0開始計
作者: java2    時間: 2019-1-15 20:27

因為人看第n個係由1數起.
想想如果 char c='I' 就會明.





歡迎光臨 電腦領域 HKEPC Hardware (https://www.hkepc.com/forum/) Powered by Discuz! 7.2