2017-02-27 32 views
1

這是我的以下程序。我不想要一個新的生產線,這就是爲什麼我用fputs()代替puts()我應該使用fputs還是putchar?

char words[5][6] = {"One", "Two", "Three", "Four", "Five"}; 
for (i = 0; i <= 4; i++) 
    fputs(words[i], stdout); 

我想知道,這行代碼是足夠安全,以替代該代碼使用。

for (i = 0; i < 5; i++) 
{ 
    for (j = 0; j < 6; j++) 
    if (words[i][j] != NULL) 
     putchar(words[i][j]); 
    else 
     continue; 
} 

注:我知道在第二代碼段的循環需要一點的工作,特別是在if語句,但我總想知道的輸出。我問這個問題,因爲在我第一個問題上,我使用了gets(),並被告知不要。所以我想避免糟糕的關鍵詞說話。

+0

它比替代品更安全,更簡單。 – chqrlie

回答

1

我應該使用fputs還是putchar?

我會建議您使用fputs爲您的目的,因爲它實現您的目標,而無需重新發明輪子。

你的第二種方法putchar也將工作,但又是爲什麼重新發明輪子?但是,如果出於某些原因必須使用putchar,則需要用continue替換爲break,以在遇到標記字符串結尾的null character時跳出內部循環。

0

gets本質上是不安全的(2011年又從C標準中刪除),fputs不是。我看到您的代碼使用fputs沒有錯。

0

fputs可以安全使用。正如你所說,gets並不好。

0

putsfputs在這方面都是安全的。你的選擇只是fputs的(壞)C翻譯。這是錯誤的,因爲您在空字符後繼續循環。如果由於任何原因,第一個空值之後存在垃圾(來自先前更長的字符串),則可以使用它。

無論如何,標準庫中的函數可能會經過優化,所以您應該儘可能使用它們。

相關問題