[爆卦]Scanf_s c是什麼?優點缺點精華區懶人包

為什麼這篇Scanf_s c鄉民發文收入到精華區:因為在Scanf_s c這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者ccam (′・ω・`)看板C_and_CPP標題[問題] C 無法輸入字串時間Wed Apr ...


開發平台(Platform): (Ex: Win10, Linux, ...)
Win10

編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
Visual Studio 2017

問題(Question):
自己看書看到陣列的章節
有一個範例是輸入字串的,照著寫之後,除錯時沒問題
可以印出 "Enter a string: "
但是輸入任何字都出現錯誤

錯誤結果(Wrong Output):
0x0F75C6BC (ucrtbased.dll) 中 (於 Project1.exe) 擲回例外狀況: 0xC0000005:
寫入位置 0x01100000 時發生存取違規。

程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔)

#include <stdio.h>
int main()
{
char str[20], string2[] = "string literal";

printf("Enter a string: ");
scanf_s("%s", str);
printf("string1 is: %s\nstring2 is: %s\n", str, string2);

return 0;
}

補充說明(Supplement):

求解惑,感謝。

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 120.107.168.98
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1523429161.A.218.html
tjjh89017: scanf_s如果是%c %C %s %S,需要再多給一個長度限制的 04/11 14:48
tjjh89017: 參數 04/11 14:49
這個限制要加在那邊呢?
我看的這本書是很舊的,不知道會不會有差異

找到了,改成
scanf_s("%s", str, 20);
就可以了,感謝指點。
※ 編輯: ccam (120.107.168.98), 04/11/2018 15:06:13
nicknick0630: scanf_s("%s",str,20); 04/11 15:07
nicknick0630: 或是把安全檢查關掉就可以直接用scanf("%s",str); 04/11 15:08
tony02258: #define _CRT_SECURE_NO_WARNINGS 04/12 13:44

你可能也想看看

搜尋相關網站