2017-07-25 217 views
0

当在matlab中使用fprintf时,我遇到了一个问题。我写一个大字符数组,像这样:fprintf大小限制

fileID = fopen(s,'w');         
fprintf(fileID,'%s',test_text);        
fclose(fileID); 

当输出文本文件中的任何小于1GB,似乎工作,但会过去的,这将导致输出文件为空(0字节)。我相信这可能是一个32位的限制。这是正确的,如果有的话,是否有任何解决方法?

任何帮助表示赞赏,谢谢。

回答

0

我无法重现您的问题。该脚本将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

嗯,我只是跑你的确切代码,它做了我所描述的,并立即输出一个0字节的空文件。我正在使用Windows 7 64位和Matlab R2016b。我会尝试更新到最新的2017a,然后再试一次.... – Seb

+1

为了支持Unicode,大多数现代语言中的char数据类型都是2个字节。 – excaza