0

我想将整数作为字符串缓冲区发送到带有WriteFile. 这个数据值是传感器的结果,这个数据最多有 2 个字符。

我试图用 itoa 转换

例如:

 DWORD nbytes;
 int a,b,c;
 a=10;
char *tempa ="";
tempa = itoa(a, tempa,0);
if(!WriteFile( hnd_serial, a, 2, &nbytes, NULL )){MessageBox(L"Write Com Port fail!");return;} 

此代码不起作用。

Unhandled exception at 0x1024d496 (msvcr100d.dll) in ENVSConfig.exe: 0xC0000094: Integer division by zero.

我也尝试过这个网站的建议: 将 int 转换为字符串,但仍然无法正常工作。

有什么线索可以做到这一点吗?

4

1 回答 1

1

你没有正确使用 itoa,你需要为你的字符串分配空间,你需要提供一个正确的基数(这是你被零除错误发生的地方),最后你需要使用缓冲区,而不是你的原始a值,作为您写入的缓冲区。

尝试以下操作:

DWORD nbytes;
int a,b,c;
a = 10;
char tempa[64];  // Randomly picked 64 characters as the max size
itoa(a, tempa, 10);
if(!WriteFile(hnd_serial, tempa, 2, &nbytes, NULL))
{
    MessageBox(L"Write Com Port fail!");
    return;
} 
于 2013-08-16T04:45:40.193 回答