求大神指教。。。。。。。。。。

plmzt 2014-09-29 10:52:06
if(!strcmp(fgets(buffer, BUFFERSIZE, stdin), endstr))
break;

此语句是什么意思,哪位大神帮忙解释下,不胜感激呀。
...全文
120 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wnjason 2014-10-01
  • 打赏
  • 举报
回复
这个代码可以分解成两步: fgets(buffer, BUFFERSIZE, stdin); 从标准输入中读取最多BUFFERSIZE个字符到buffer中,fgets返回值是一个指针,指向buffer if(!strcmp(buffer, endstr)) 判断buffer中的内容是否跟endstr相同。 综合起来,if(!strcmp(fgets(buffer, BUFFERSIZE, stdin), endstr)) 意思就是从标准输入中读最多BUFFERSIZE字符,然后判断读到的字符是否是endstr。
aa5566f4 2014-09-30
  • 打赏
  • 举报
回复
先看fgets函數 stdio.h 中的 fgets() 從檔案一行一行的讀取資料,共需三個參數,第一個參數為儲存輸入資料的陣列,第二個參數為該行最多幾個字元,第三個參數為指向結構 FILE 的指標。 以下程式用 fgets() 取得一行文字便列印到螢幕上

int main(void)
{
    FILE *fPtr;
    char s[50]; 
     
    fPtr = fopen("oldname.txt", "r");
    if (!fPtr) {
        printf("檔案開啟失敗...\n");
        exit(1);
    }
     
    while (fgets(s, 50, fPtr) != NULL) {
        printf(s);
    }
    printf("\n");
 
    fclose(fPtr);
     
    return 0;
}
再看strcmp函數 string.h 的函數 strcmp() ,需要兩個字串當作參數,比較兩個字串是否相等,相等就回傳 0,第一個字串大於第二個字串回傳正值,反之回傳負值。 以下程式比較字串 s 與字串 t 是否相等

#include <stdio.h>
#include <string.h>
 
int main(void)
{
    char s[] = "Hello, world!";
    char t[] = "Hello, my friend!";
    int test = strcmp(s, t);
     
    if (test == 0) {
        printf("All right!\n");
    }
    else {
        if (test > 0) {
            printf("%s\n", s);
        }
        else {
            printf("%s\n", t);
        }
    } 
     
    return 0;    
}
 
這樣懂了嗎? 如果不懂你要把完整代碼再貼上來我一行一行解釋了
plmzt 2014-09-30
  • 打赏
  • 举报
回复
引用 1 楼 aa5566f4 的回复:
先看fgets函數 stdio.h 中的 fgets() 從檔案一行一行的讀取資料,共需三個參數,第一個參數為儲存輸入資料的陣列,第二個參數為該行最多幾個字元,第三個參數為指向結構 FILE 的指標。 以下程式用 fgets() 取得一行文字便列印到螢幕上

int main(void)
{
    FILE *fPtr;
    char s[50]; 
     
    fPtr = fopen("oldname.txt", "r");
    if (!fPtr) {
        printf("檔案開啟失敗...\n");
        exit(1);
    }
     
    while (fgets(s, 50, fPtr) != NULL) {
        printf(s);
    }
    printf("\n");
 
    fclose(fPtr);
     
    return 0;
}
再看strcmp函數 string.h 的函數 strcmp() ,需要兩個字串當作參數,比較兩個字串是否相等,相等就回傳 0,第一個字串大於第二個字串回傳正值,反之回傳負值。 以下程式比較字串 s 與字串 t 是否相等

#include <stdio.h>
#include <string.h>
 
int main(void)
{
    char s[] = "Hello, world!";
    char t[] = "Hello, my friend!";
    int test = strcmp(s, t);
     
    if (test == 0) {
        printf("All right!\n");
    }
    else {
        if (test > 0) {
            printf("%s\n", s);
        }
        else {
            printf("%s\n", t);
        }
    } 
     
    return 0;    
}
 
這樣懂了嗎? 如果不懂你要把完整代碼再貼上來我一行一行解釋了
多谢这位好心的大神,不知大神有QQ没,方便的话给下,以后小弟有不懂的地方还请大神多多指教。。。
plmzt 2014-09-30
  • 打赏
  • 举报
回复
引用 2 楼 slx_391987 的回复:
这个代码可以分解成两步: fgets(buffer, BUFFERSIZE, stdin); 从标准输入中读取最多BUFFERSIZE个字符到buffer中,fgets返回值是一个指针,指向buffer if(!strcmp(buffer, endstr)) 判断buffer中的内容是否跟endstr相同。 综合起来,if(!strcmp(fgets(buffer, BUFFERSIZE, stdin), endstr)) 意思就是从标准输入中读最多BUFFERSIZE字符,然后判断读到的字符是否是endstr。
引用 2 楼 slx_391987 的回复:
这个代码可以分解成两步: fgets(buffer, BUFFERSIZE, stdin); 从标准输入中读取最多BUFFERSIZE个字符到buffer中,fgets返回值是一个指针,指向buffer if(!strcmp(buffer, endstr)) 判断buffer中的内容是否跟endstr相同。 综合起来,if(!strcmp(fgets(buffer, BUFFERSIZE, stdin), endstr)) 意思就是从标准输入中读最多BUFFERSIZE字符,然后判断读到的字符是否是endstr。
引用 2 楼 slx_391987 的回复:
这个代码可以分解成两步: fgets(buffer, BUFFERSIZE, stdin); 从标准输入中读取最多BUFFERSIZE个字符到buffer中,fgets返回值是一个指针,指向buffer if(!strcmp(buffer, endstr)) 判断buffer中的内容是否跟endstr相同。 综合起来,if(!strcmp(fgets(buffer, BUFFERSIZE, stdin), endstr)) 意思就是从标准输入中读最多BUFFERSIZE字符,然后判断读到的字符是否是endstr。
多谢大神。。。非常感谢呀。
帅气小小少 2014-09-30
  • 打赏
  • 举报
回复
这个代码可以分解成两步: fgets(buffer, BUFFERSIZE, stdin); 从标准输入中读取最多BUFFERSIZE个字符到buffer中,fgets返回值是一个指针,指向buffer if(!strcmp(buffer, endstr)) 判断buffer中的内容是否跟endstr相同。 综合起来,if(!strcmp(fgets(buffer, BUFFERSIZE, stdin), endstr)) 意思就是从标准输入中读最多BUFFERSIZE字符,然后判断读到的字符是否是endstr。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧