// gets_puts.c #include <stdio.h> #include <string.h> int main() { char szTemp[32]; while (1) { printf("Please input a string: \n"); memset(&szTemp, '\0', sizeof(char) * 32); gets(szTemp); if (szTemp[0] == '\0') break; else puts(szTemp); } return 0; }fgets(), fputs()和gets(), puts()這兩組函式的差異在哪??
1. fgets()的第3個參數,除了可以從檔案 (FILE *fp)讀取之外,也可以從標準輸入 (stdin)讀取,例如:鍵盤;而gets()僅能從標準輸入讀取資料;
2. fputs()的第2個參數,除了可以輸出至檔案 (FILE *fp)之外,還可以輸出至標準輸出 (stdout),例如:螢幕;而puts()僅能做標準輸出;
3. fgets()的第2個參數可以確保使用者所輸入的字串大小,防止OverFlow的問題;
4. fgets()會多送一個換行字元 ('\n');而fputs()則不會;
5. gets()不會送換行字元 ('\n');而puts()則會。
在我的開發環境上 (Fedora Linux 13 i686; gcc (GCC) 4.4.5 20101112)上,甚至還會出現警告訊息 (warning);
warning: the `gets' function is dangerous and should not be used.
警告:`gets'函式是危險的並且不應該被使用。
char *gets(char *s);
int puts(const char *s);
沒有留言:
張貼留言