user-0 提问: 求大神指教。。。。。。。。。。

回复:
user: user-1
content: 这个代码可以分解成两步： fgets(buffer, BUFFERSIZE, stdin); 从标准输入中读取最多BUFFERSIZE个字符到buffer中，fgets返回值是一个指针，指向buffer  if(!strcmp(buffer, endstr)) 判断buffer中的内容是否跟endstr相同。  综合起来，if(!strcmp(fgets(buffer, BUFFERSIZE, stdin), endstr)) 意思就是从标准输入中读最多BUFFERSIZE字符，然后判断读到的字符是否是endstr。

user: user-2
content: 先看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;     }    這樣懂了嗎? 如果不懂你要把完整代碼再貼上來我一行一行解釋了

user: user-0
content: 引用 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没，方便的话给下，以后小弟有不懂的地方还请大神多多指教。。。

user: user-0
content: 引用 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。   多谢大神。。。非常感谢呀。

user: user-3
content: 这个代码可以分解成两步： fgets(buffer, BUFFERSIZE, stdin); 从标准输入中读取最多BUFFERSIZE个字符到buffer中，fgets返回值是一个指针，指向buffer  if(!strcmp(buffer, endstr)) 判断buffer中的内容是否跟endstr相同。  综合起来，if(!strcmp(fgets(buffer, BUFFERSIZE, stdin), endstr)) 意思就是从标准输入中读最多BUFFERSIZE字符，然后判断读到的字符是否是endstr。