Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在Matlab中将定长字节数组写入二进制文件_C++_C_Matlab_Binaryfiles - Fatal编程技术网

C++ 在Matlab中将定长字节数组写入二进制文件

C++ 在Matlab中将定长字节数组写入二进制文件,c++,c,matlab,binaryfiles,C++,C,Matlab,Binaryfiles,我需要从Matlab中编写一个二进制文件,该文件将由c程序读取 .h文件定义了我试图编写的字符串 char elem[16] 在matlab方面: str = 'abc' % A variable length string <= 15 chars fwrite(fp, str, 'char*1') 我不知道如何强制matlab向str添加一个空字符,并用垃圾缓冲它,直到合适的大小,以便c程序可以读取它 注意我不能修改c代码,所以我需要让Matlab以正确的格式写出文件 下面的代码就

我需要从Matlab中编写一个二进制文件,该文件将由c程序读取

.h文件定义了我试图编写的字符串

char elem[16]
在matlab方面:

str = 'abc' % A variable length string <= 15 chars
fwrite(fp, str, 'char*1') 
我不知道如何强制matlab向str添加一个空字符,并用垃圾缓冲它,直到合适的大小,以便c程序可以读取它


注意我不能修改c代码,所以我需要让Matlab以正确的格式写出文件

下面的代码就是我最后得到的。零最终成为空字符。不确定是否有更优雅的解决方案

out_str = "abc";
out_len = 16; 
fwrite(fid_out, out_str, 'char*1'); 
fwrite(fid_out, zeros(1,out_len - length(out_str)),'char*1');

空字符本质上是零。因此,只需在字符串末尾写零。。。不是角色零。。。实际的数字是零。@rayryeng作为一个不太熟悉matlab的人,有没有更好的方法来将一个带零的字符串缓冲到所需的长度?你需要使用NaN,而不是0。0将作为字符“0”输出到文件中0' != '\是的,只需从字符串长度中计算出需要多少个零即可。在本例中,abc中存储了三个字符,因此需要16-3=13个零。因此,在第一次fwrite调用后执行类似操作:fwritefp,zeros1,13,'uint8';。请注意,我还没有测试过这个,所以请尝试一下并让我知道。你可能是对的,只要你使用正确的编码。