0
Unhandled exception at 0x102e1cee (msvcr100d.dll) in filename.exe 0xC0000005: Access violation writing location 0x00416858 on.

调试指向线:

if (_putc_nolock(ch, f) == EOF)

代码

#else  /* _UNICODE */
    if (_putc_nolock(ch, f) == EOF)
#endif  /* _UNICODE */
        *pnumwritten = -1;
    else
        ++(*pnumwritten);
}

在 output.c 中,我相信它链接在 Visual Studio 库中。我没有链接它。

我的代码是:

body=""
myFile=CreateFile("Sample.txt",FILE_APPEND_DATA,FILE_SHARE_WRITE,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
BufferNo=sprintf(body,"%.5f %[3].5f %[3].5f %[3].5f %[3].5f %[3].5f %[3].5f %[3].5f \n",a1,a2,a3,a4,a5,a6,a7,a8);
WriteFile(myFile,body,lstrlen(body),0,NULL);
CloseHandle(myFile);

我最初用以下几行写信给文件。我不得不写标题。

HANDLE myFile=CreateFile("Sample.txt",GENERIC_WRITE,FILE_SHARE_WRITE,0,CREATE_NEW,FILE_ATTRIBUTE_NORMAL,0);
char* HeadingStr="a1   a2   a3   a4   a5   a6   a7   a8 \n";
WriteFile(myFile,HeadingStr,lstrlen(HeadingStr),0,NULL);
CloseHandle(myFile);

我该如何解决这个错误?注意我有写权限。我也以管理员身份运行。请注意,我已经在最后一个代码的使用之外定义了 BufferNo、myFile。

更新 我删除了body="" 现在我得到了

filename.exe triggered a breakpoint.

指向下面评论中提到的文件。

**EDIT**

现在,我有写作问题。错误读取

Unhandled exception at 0x7c811384 in stabilo.exe: 0xC0000005: Access violation writing location 0x00000000 on.

并指向线

   WriteFile(myFile,body,lstrlen(body),0,NULL);
4

2 回答 2

3

本节中的变量body不正确。

body="";
...
BufferNo=sprintf(body,"%.5f %[3].5f %[3].5f %[3].5f %[3].5f %[3].5f %[3].5f %[3].5f\n",
                      a1,a2,a3,a4,a5,a6,a7,a8);

大概它是一个char *(尽管我只是在猜测),这意味着您正在尝试将一堆数字值写入一个能够恰好包含零个字符的常量字符串。因为它是一个常数,所以它是不可写的。

将其更改为char body[1000];或类似的东西。

于 2013-07-01T12:43:45.213 回答
0

sprintf肯定会超出缓冲区。更糟糕的是:您尝试覆盖字符串文字。

于 2013-07-01T12:44:11.297 回答