看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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