2014-02-25 25 views
1

我試過這段代碼,但它不工作。調用scanf_s()與字符數組

char word1[40]; 
printf("Enter text: \n"); 
scanf_s("%s", word1); 
printf("word1 = %s", word1); 

當我執行它,它表明:

word1 = 
+1

這聽起來很愚蠢,但你輸入任何東西,當它提示? –

+1

如果你使用C++,你通常應該使用'std :: string'和iostreams來輸入/輸出。 – crashmstr

回答

1

如果你仔細閱讀MSDN documentation of scanf_s(),你會發現,你必須提供該字符串緩衝區的長度:

不同於scanf函數和wscanf,scanf_s和wscanf_s所需要的緩衝器大小 爲所有INP指定ut類型的參數c,c,s,S或字符串 用[]括起來的控制集。以字符爲單位的緩衝區大小爲 作爲附加參數傳遞,緊接在指向緩衝區或變量的指針 之後。

調整您的通話scanf_s()如下:

scanf_s("%s", word1, _countof(word1)); 

這應該工作。

(注意:_countof()需要包括<stdlib.h>