#include<stdio.h>
int main()
{
char cha[30];
scanf_s("%s", cha);
printf("%s", cha);
system("pause");
return 0;
}
//0x0F8AD3EC (ucrtbased.dll)處(位于 Not.exe 中)引發的例外: 0xC0000005: 寫入位置 0x00900000 時發生訪問沖突
//我沒覺得代碼有任何問題呀,為什么會出現訪問沖突呢?
uj5u.com熱心網友回復:
樓主,應該是下面的用法才對:#include<stdio.h>
int main()
{
char cha[30] = { 0 };
scanf_s("%29s", cha, (unsigned)_countof(cha));
printf("----\n%s", cha);
system("pause");
return 0;
}
出現你上面的錯誤,應該是訪問記憶體越界了吧。。。
uj5u.com熱心網友回復:
首先scanf_s是VS專用,你的編譯器是VS嗎uj5u.com熱心網友回復:
是的,VS2017uj5u.com熱心網友回復:
#include<stdio.h>看一下scanf_s的用法
int main()
{
char cha[30];
scanf_s("%s", cha,20);
printf("%s", cha);
system("pause");
return 0;
}
uj5u.com熱心網友回復:
逗號寫錯了#include<stdio.h>
int main()
{
char cha[30];
scanf_s("%s", cha,20);
printf("%s", cha);
system("pause");
return 0;
}
uj5u.com熱心網友回復:
我知道了,VS下scanf_s的用法不一樣,在輸入字串時需要有其長度引數uj5u.com熱心網友回復:
崩潰的時候在彈出的對話框按相應按鈕進入除錯,按Alt+7鍵查看Call Stack即“呼叫堆疊”里面從上到下列出的對應從里層到外層的函式呼叫歷史。雙擊某一行可將游標定位到此次呼叫的源代碼或匯編指令處,看不懂時雙擊下一行,直到能看懂為止。uj5u.com熱心網友回復:
犯了類似錯誤 我來挖個fen。。。scanf_s("%s", cha);
這里少了&這個 取地址符號!!加上就好了!
uj5u.com熱心網友回復:
scanf_s("%s", cha, 30);對于%s而言,樓主的是缺少一個引數,即字符陣列的長度~
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/20720.html
標籤:C語言
上一篇:關于__int128的疑問
