写80字的缓冲区在二进制格式文件

8视图(30天)
美联社
美联社 2013年6月14日
我想翻译以下代码片段在C。
字符缓冲[80];
strcpy(缓冲区,“速度”);
写入文件(缓冲区,sizeof (char), 80年,file_ptr);
下面是上面的MATLAB版本的代码片段。我相信有一个更好的方法来用MATLAB。
缓冲=' ';
缓冲= repmat(缓冲,80);
mystring =“速度”;
缓冲(1:元素个数(mystring)) = mystring;
fid = fopen(文件名,' w ');
写入文件(fid,缓冲区,“*字符”);
有人能给我一个更高效的翻译上面的片段?
1评论
沃尔特·罗伯森
沃尔特·罗伯森 2013年6月14日
C代码的含义你取决于缓冲[80]是否在文件中定义范围或在功能范围。如果在函数范围(似乎更有可能),那么缓冲区的内容未定义的C二进制\ 0之后,而如果是在文件范围之后的内容位置是二进制0 C二进制\ 0。
代码的正确的翻译取决于有多少字节“字符”被定义为在目标处理器。通常是一个字节(定义),但是在嵌入式处理,特别是dsp、字符C可能占用16位词甚至一个32位的字。
MATLAB的定义“字符”,如果你能找到它,要求至少16位字符,但目前还不清楚如果你想让缓冲区(最充满8位字符 可能 C,但 的正式定义C !用16位字符)或(在精神上C wchar)

登录置评。

答案(3)

大卫·桑切斯
大卫·桑切斯 2013年6月14日
你想写一个文件,“速度”吗?
文件名=“测试”;%或任何你想要的名字
缓冲=“速度”;
fid = fopen(文件名,' w ');
写入文件(fid,缓冲区,“*字符”);
fclose (fid)
不要忘记关闭文件后使用它。
1评论
美联社
美联社 2013年6月14日
编辑:美联社 2013年6月14日
我想写任何字符串少于80个字符到一个文件。然而,我想要占据80个字符的字符串。我不想写一个字符串,例如10个字符。

登录置评。


大卫·桑切斯
大卫·桑切斯 2013年6月14日
这是有点长,但它的工作原理。
缓冲=“速度”;%你的字符串
my_str =细胞(80 1);%初始化一个细胞进行字符
k = 1:大小(my_str)
my_str {k} =' ';
结束
k2 = 1:尺寸(缓冲区,2)
my_str {k2} =缓冲区(k2);
结束
final_str =;
k3 = 1:大小(my_str)
final_str = horzcat (final_str my_str {k3});% 80你得到一个字符串,checl与“长度(final_str)”
结束
文件名=“测试”;%或任何你想要的名字
fid = fopen(文件名,' w ');
写入文件(final_str支撑材,“*字符”);
文件关闭(fid);

沃尔特·罗伯森
沃尔特·罗伯森 2013年6月14日
文件名=“测试”;%或任何你想要的名字
OutString =“速度”;
缓冲= uint8 rand (255 * (80);
缓冲(1:长度(OutString)) = OutString;
缓冲(长度(OutString) + 1) = 0;
fid = fopen(文件名,' w ');
写入文件(fid,缓冲);
fclose (fid)
文件名=“测试”;%或任何你想要的名字
OutString =“速度”;
噪音= uint8 rand(255 *(80 -长度(OutString) - 1));
fid = fopen(文件名,' w ');
写入文件(OutString支撑材,“uint8”);
写入文件(fid, 0,“uint8”);
写入文件(支撑材、噪音);
文件关闭(fid);
除非,你有一个需要整个写作过程的原子。
如果你不需要OutString一个变量,你可以得到更紧凑。如果你不介意假定缓冲将零起步,然后:
文件名=“测试”;%或任何你想要的名字
缓冲= 0 (80,“uint8”);
OutString =“速度”;
缓冲区(1:长度(OutString)) = uint8 (OutString);
fid = fopen(文件名,' w ');
写入文件(fid,缓冲);
fclose (fid)
如果你需要开始空白( 由纯C的情况除非事故),那么请记住零字节字符串后如果你需要strcpy()的一致性。
当然有
fid = fopen (“测试”,' w ');
写入文件(fid, [uint8 (“速度”72年),0(1日,“uint8”));
fclose (fid)
注:原C代码假定文件已经打开,不被关闭,所以MATLAB版本看起来更长,因为他们照顾这些细节除了写数据。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!