C語言 while

while( fgets(str,500,fp1)!=NULL )

請大大們為我解答上面這段程式所表達的意思是甚麼

3 個解答

評分
  • 6 年前
    最佳解答

    不錯的魚耶! 先研究 再使用 對對對!

    char *fgets(char *s, int size, FILE *stream);

    fgets()

    1. 從stream讀入

    2. 最多到size-1 個字元

    3.寫到s所指的記憶體內

    4.再加以null terminate

    5.若是毒入成功則傳回 s

    6.若是毒入失敗則傳回 NULL

    所以你的原題是:

    從 fp1 一次 毒入最多499字元 (用來做某事) 直到失敗為只...

    它也可以寫成:

    while (fgets(str, 500, fp1)) {/* do this */ }

    or

    for(;gets(str, 500, fp1);) {}

    2014-01-23 22:11:00 補充:

    是很親切. 但是50的使用真是很不應該!

    教壞人家全家大小! 至少也要醬寫:

    for(;NULL != fgets(s,sizeof(s),fPtr) && printf(s););

    // 小時偷雞 大時做專案經理

    2014-01-24 03:54:53 補充:

    sizeof operator 是C與C++裡面超載最嚴重的operator

    他就是幫你計算operand的大小啊!很容易吧.

    唯二要注意的是

    1. 要計算[]的元素個數時候要用:

    Type Array[SZ];

    SZ == sizeof(Array)/sizeof(Array[0])

    2014-01-24 03:57:50 補充:

    2. 要避免使用 "型態名" 來做操作員

    sizeof(int) // 差到要打屁屁

    int x; sizeof(x); // 醬材對

    2014-01-24 04:02:51 補充:

    003的問題與本題無關(其實004也樣)

    請另尋高就!不然你問我世界和平的解決辦法 我不識又要頭痛了嗎?

    2014-01-24 04:21:19 補充:

    > (007) 你的問題還好啦, 加油加油

    醬問題 不打屁屁 已經很客氣了 還稱讚

    要是你是我的老師 我不就被你氣死了?

    我還以為他會問:

    1. 為神NULL要放左邊

    2. 為神要 用&&把printf()也包近來

    結果被問到最雞本的 還好本尊公主正在研究爪哇咖啡 不然還差點被問倒了!

    2014-01-25 07:27:12 補充:

    在開一題來問的話 我說不定可以回答喔!

  • 6 年前

    char*token[5]

    需要用%s顯示

    char token[5]

    需要用%d顯示

    請問大大以上兩種有甚麼分別

    2014-01-23 22:15:30 補充:

    2樓的大大

    請問你2樓所用到語法是sizeof運算子,但我對sizeof運算子的用法不是很了解,

    能請大大為我解惑嗎???

    2014-01-23 22:32:48 補充:

    Tai大大最近很忙唷???

    我又遇到好多C程式語言的問題

    想到我白頭髮都快跑出來了

    2014-01-24 09:55:27 補充:

    感謝Prisoner2655熱心的回答我的答案

    Tai大大

    你能為我解答一下4樓的疑問嗎

    2014-01-24 12:41:03 補充:

    Tai大大

    我打錯了 是三樓在對

    2014-01-24 20:39:34 補充:

    Tai大大,謝謝你解答

    我有一直在翻書尋找答案

    只是書上寫的很雜

    不是很了解,謝謝大大

    2014-01-25 21:31:02 補充:

    感謝prisoner26535大大

  • Tai
    Lv 5
    6 年前

    這篇寫得很親切呢

    http://pydoing.blogspot.tw/2010/07/c-fgets.html

    2014-01-23 22:30:44 補充:

    樓開給你囉, 最近忙啊閃邊

    2014-01-23 22:43:29 補充:

    你的問題還好啦, 加油加油

    prisoner 大很熱心地回答了

    認真看吧

    2014-01-24 12:20:28 補充:

    阿魚, p 大有解釋 4 樓的問題喔.

    2014-01-24 15:33:41 補充:

    char*token[5];

    token 是 char* array, 有五個 char*.

    char* 可能指向 char[], 存放字串, 也就是尾部以 \0 結尾的特殊陣列.

    printf("%s", token[0]);

    而 char token[5] 是 char array, 有五個 char.

    char 本身只是 one byte 數字, 專用來放 ASCII 這種小範圍數字.

    用 %d 顯示是以數字顯示, 比如

    也可用 %c , 以 ASCII 字元顯示, 比如英文大小寫字母

    2014-01-24 15:49:47 補充:

    我又忘了 YK+ 意見區會吃跳脫符號

    阿魚發揮想像力吧

    說真的基本知識看書比較能循序學習

還有問題?馬上發問,尋求解答。