2015-10-29 67 views
1

我使用Visual Studio 2015年的企業,我已經收到此錯誤:的Visual Studio C/C++ ucrtbased.dll訪問衝突寫入位置

Exception thrown at 0x00007FF8E19979A3 (ucrtbased.dll) in Assignment 1C.exe: 0xC0000005: Access violation writing location 0x0000008836510000. 

...每當我使用一個字符/字符串輸入,在這個簡單的程序範圍內:

#include <stdio.h> 
#include <string.h> 

int main() { 
    char name[40], chk; 

    printf("What is your name?"); 
    scanf_s("%s", name); 
    chk = getchar(); 
    return 0; 
} 

仍然給我同樣的錯誤。我不知道是什麼導致它,雖然我懷疑它是從我正在使用的庫或實際的編譯器的東西?打開建議。

+2

'scanf_s( 「%S」,名);'** - > **'scanf_s( 「%S」 的名字,39);'你需要指定大小在'scanf_s'中使用'%s'說明符時。 – ameyCU

+0

我明白了。有效。你是以字節還是數組中的位置來指定大小? – Logan

+0

來自MSDN'與scanf和wscanf不同,scanf_s和wscanf_s要求爲所有包含在[]中的c,C,s,S或字符串控件集的輸入參數指定緩衝區大小。以字符爲單位的緩衝區大小作爲附加參數傳遞到指向緩衝區或變量的指針之後。# – user1

回答