// 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);
沒有留言:
張貼留言