抛出异常:访问冲突写入位置0x00000000

时间:2013-12-16 21:14:00

标签: c exception visual-studio-2012

我一直收到以下代码段的以下错误。我不知道这意味着什么。有人能告诉我为什么一直这样做吗?

  

ConsoleApplication8.exe中0x5A0DB49C(msvcr110d.dll)的未处理异常:0xC0000005:访问冲突写入位置0x00000000。

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

int main ( void )
{
    char str[]="asd asd 3, 5; 12, 525; 123, 45235;";
    int a[100]={0};
    int b[100]={0};
    int i=0;
    sscanf (str, "asd asd %d, %d; %d, %d; %d, %d;", a[0], b[0], a[1], b[1], a[2], b[2]);

    for (i=0; i<3; i++){

        printf ("%d %d\n", a[i], b[i]);

    }
    return 0;

}

2 个答案:

答案 0 :(得分:3)

sscanf

的语法
sscanf(characterArray, "Conversion specifier", address of variables); 

建议您在&类型的sscanf参数中需要int

sscanf (str, "asd asd %d, %d; %d, %d; %d, %d;", a[0], b[0], &a[1], &b[1], &a[2], &b[2]);

答案 1 :(得分:0)

尝试:

sscanf (str, "asd asd %d, %d; %d, %d; %d, %d;", &a[0], &b[0], &a[1], &b[1], &a[2], &b[2]);

而不是你所拥有的sscanf电话。否则,您可能会得到一个空指针异常(int数组值为0)。