在Visual Studio中写入文件时出错
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);
此部分中的变量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];
或类似的东西。
您的sprintf
肯定会超出缓冲区。 更糟糕的是:你试着写一个字符串文字。