fprintf大小限制
问题描述:
当在matlab中使用fprintf时,我遇到了一个问题。我写一个大字符数组,像这样:fprintf大小限制
fileID = fopen(s,'w');
fprintf(fileID,'%s',test_text);
fclose(fileID);
当输出文本文件中的任何小于1GB,似乎工作,但会过去的,这将导致输出文件为空(0字节)。我相信这可能是一个32位的限制。这是正确的,如果有的话,是否有任何解决方法?
任何帮助表示赞赏,谢谢。
答
我无法重现您的问题。该脚本将2GB的textdata写入test.txt,并且运行时没有错误。我在Windows 7 64位上使用matlab 2017a。 (确实需要43秒)
st = char(randi([0 255],[1,2^31],'uint8')); %2GB of textdata
fileID = fopen('test.txt','w');
fprintf(fileID,'%s',st);
fclose(fileID);
让我感到惊讶的是,matlab每个char值使用2个字节。
嗯,我只是跑你的确切代码,它做了我所描述的,并立即输出一个0字节的空文件。我正在使用Windows 7 64位和Matlab R2016b。我会尝试更新到最新的2017a,然后再试一次.... – Seb
为了支持Unicode,大多数现代语言中的char数据类型都是2个字节。 – excaza