2016年11月28日 星期一

C語言:用fgets取代gets

以下是原有程式碼
#include <stdio.h>
#include <stdlib.h>

int main()
{
    char a[999];
    gets(a);
    printf("%s",a);

    return 0;
}

因為gets容易產生緩衝區溢位的安全問題,所以建議用fgets取代。

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char a[999];
    fgets(a,999,stdin);
    printf("%s",a);

    return 0;
}

fgets第一個參數是用以存字串的陣列名稱,第二個參數是一行最多的字元數,第三個參數是指標,若第三個參數填入stdin,則會讀取來自鍵盤的輸入。

沒有留言:

張貼留言