為什麼這篇Scanf_s 字串鄉民發文收入到精華區:因為在Scanf_s 字串這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者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
我看的這本書是很舊的,不知道會不會有差異
找到了,改成
scanf_s("%s", str, 20);
就可以了,感謝指點。
※ 編輯: ccam (120.107.168.98), 04/11/2018 15:06:13