簡體   English   中英

在Visual Studio C ++ 2010 Express中,scanf_s不適用於printf

[英]scanf_s doesn't work with printf in Visual Studio C++ 2010 Express

我寫了這些代碼:

#include <stdio.h>
int main(void)
{
    char input[50]={0};
    scanf_s("%s",input);
    printf("%s",input);
    return 0;
}

當我在發布模式(Ctrl + F5)中運行它時,它不會打印任何內容,但是在調試模式(F5)中它可以打印任何內容,並且沒有錯誤。 在發布模式下,控制台屏幕如下所示:

abcd
Press any key to continue . . .

第一行是我的輸入,這是調試模式下的屏幕:

abcd
abcdPress any key to continue . . .

當我使用scanf而不是scanf_s時,它會在調試和釋放模式下進行打印。 我想念什么?

這個版本的scanf()需要另一個參數,正確的調用方式是

scanf_s("%49s", input, 50);

並且scanf()返回一個值,您不應忽略它,永遠不要

if (scanf_s("%49s", input, 50) == 1)
    printf("%s\n", input);

另外,添加'\\n'來刷新輸出流,而不需要fflush() ,並通過警告使您的編譯器盡可能令人討厭。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM