c語言 統計字元數超過5的字串

我想要用c讀取txt檔,將一篇英文文章中單字超過5個字母的字串統計出來共有幾個

但是目前沒有任何想法,使用了strcmp來進行比較,卻失敗(可能我還搞不懂strcmp的比較方法)

單就以下的程式幫我解說就好,搞懂這個strcmp我就會了(還是我想要的結果不能strcmp做到?)

如果b是欲判斷的,我輸入aaaaa卻是a>b,表示失敗的結果...

char a[10]="zzzz";

char b[10]="欲判斷的";

int n;

n = strcmp(a, b);

if(n==0)printf("a=b\n");

else if(n>0)printf("a>b\n");

elseprintf("a<b\n");

2 Answers

Rating
  • 3M
    Lv 6
    8 years ago
    Favorite Answer

    int strIcmp(const char *s1, const char *s2){ int ret = 0; while (!(ret =*(unsigned char *) s1 - *(unsigned char *) s2) && *s2) ++s1, ++s2; if (ret < 0)ret = -1; else if (ret > 0)ret = 1 ; return ret;}

    以上是strcmp()的code可以發現當 s1指到的字元!=s2只到的字元時

    他就會return 1 或 -1

    ex :

    s1 = haha;

    s2 = yeah;

    一開始*s1會指到h , *s2指到y

    而 h != y

    h - y < 0 (看ascii code)

    所以他會return -1

    (反之亦然)

    所以並不是看他們2個長度來判斷

    而且strcmp()本意是用來判斷2個字串是否相等。

    看你的題目需求,你可以利用strtok();

    http://www.cplusplus.com/reference/cstring/strtok/

    切完後,看看切出來的單字長度是否大於5

    有問題在提出吧:)

  • 8 years ago

    int main() {

    int len, cnt6;

    char c;

    for(len = cnt6 = 0; EOF != (c = getchar());)

    if (isspace(c) || ispunct(c) || isblank(c)) len = 0;

    else if (++len == (1+5)) ++cnt6;

    printf("Total word count (longer than 5 letters) = %d\n", cnt6);

    return cnt6;

    }

Still have questions? Get your answers by asking now.