2013-12-11 45 views
-4

我有以下C程序,我不理解這個計劃的一些點不理解C程序

#include <stdio.h> 

int main() 
{ 
    char ara[100]; 

    while(NULL != gets(ara)) 
    { 
     printf("%s\n", ara); 
    } 

    return 0; 
} 

如果我輸入一些字符串像的Hello World,該代碼返回我的輸出與輸入相同。但是,什麼是NULL得到 ??他們是從C庫嗎?爲什麼我編譯它們時顏色沒有改變?

+0

通過顏色,你的意思是在你的文本編輯器? – Xymostech

+1

有趣的是你知道C但不知道NULL。這裏是一個關於C教程的網站:http://fresh2refresh.com/c-tutorial-for-beginners/ – Rainfield

+0

@ Xymostech。是。像** int **一樣,當我輸入它時,顏色自動改變。 –

回答

0

請閱讀description of function gets()! 該函數從標準輸入讀取字符串。如果在任何字符之前找到行尾或文件結尾,它將返回NULL。

+3

現在你已經瞭解了'gets()',**請忘記這個函數甚至存在**。使用它很危險,因爲它有可能覆蓋緩衝區(在你的情況下,如果輸入超過100個字符,你的程序將崩潰)。下一步你的旅程:瞭解可以安全使用的'fgets()'。 – Floris