fwrite with fixed length of different data types
8 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
I have a know format file with different reading format. Example -
fread(fid,[1, 40], 'char')
fread(fid,[1, 4], 'long')
fread(fid,[1, 1], 'short')
% These are data blocks
fread(fid,[400 1],'double')
fread(fid,[400 1],'int')
fread(fid,[400 1],'float')
Now, i have to write the data in the same fashion
fwrite(fid,strwrite,'40*char')
something like that -
how can i pad and fwrite of other data structures
0 Kommentare
Antworten (1)
Walter Roberson
am 26 Dez. 2018
40*char is not a permitted fwrite precision .
The precision option is not intended to give information about how many elements are being written: instead it gives information about how each input element is to be represented as output. The number is determined by the size of the variable .
fwrite(fid,strwrite,'char')
If you need to pad then fwrite the pad values yourself .
fwrite(zeroes(1,7),'uint8')
for example .
It is not possible to fwrite two different datatypes in one call. (However memory mapping routines can input or output entire structure at a time .)
3 Kommentare
Walter Roberson
am 31 Dez. 2018
no, pad(nodestr,16) would pad adding 16 values along the first dimension leading to a 17 x something character array.
Also C char is not fixed width: it is the smallest integer datatype supported by the target that is at least 8 bits and is implementation dependent as to whether it is signed or not. You should avoid defining interfaces in terms of char . Traditional C up to C89 did not offer any explicitly 8 bit datatype .
MATLAB fwrite char precision uses as many bytes as needed to encode the unicode input as the destination encoding specified or defaulted at fopen time. char*1 is 8 bit and will saturate for input beyond 255. C's char is not "wide" character .
Walter Roberson
am 1 Jan. 2019
Some time ago I wrote a small function to fwrite() with padding or truncation to a given length. It is easy to do and makes it easier to write out fixed-width structures.
Siehe auch
Kategorien
Mehr zu Logical finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!