[問題] C 無法輸入字串

看板C_and_CPP (C/C++)作者 (′・ω・`)時間8年前 (2018/04/11 14:46), 8年前編輯推噓2(203)
留言5則, 3人參與, 8年前最新討論串1/1
開發平台(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

04/11 14:48, 8年前 , 1F
scanf_s如果是%c %C %s %S,需要再多給一個長度限制的
04/11 14:48, 1F

04/11 14:49, 8年前 , 2F
參數
04/11 14:49, 2F
這個限制要加在那邊呢? 我看的這本書是很舊的,不知道會不會有差異 找到了,改成 scanf_s("%s", str, 20); 就可以了,感謝指點。 ※ 編輯: ccam (120.107.168.98), 04/11/2018 15:06:13

04/11 15:07, 8年前 , 3F
scanf_s("%s",str,20);
04/11 15:07, 3F

04/11 15:08, 8年前 , 4F
或是把安全檢查關掉就可以直接用scanf("%s",str);
04/11 15:08, 4F

04/12 13:44, 8年前 , 5F
#define _CRT_SECURE_NO_WARNINGS
04/12 13:44, 5F
文章代碼(AID): #1QpQyf8O (C_and_CPP)
文章代碼(AID): #1QpQyf8O (C_and_CPP)