2015-09-14 2 views
0

У меня есть файл, который выглядит следующим образом:Чтение шестнадцатеричное из файла с Scilab

Time M1:Address 480008C0 
0 79F9446F 
0.000125 7AE7446B 
0.00025 7BA8446F 
... 

Это 2 числа, разделенные табуляцией, один является шестнадцатеричным числом. Я хочу прочитать их в десятичном массиве в scilab. Я попытался открыть и прочитать файл следующим образом:

u=mopen('proper_log_with_fail.txt','r'); // open the file for reading 
s = mscanf(u, '%s'); // Forget the first line 
[time,val]=mfscanf(u,'%e\t%x'); // Get the second line 

Так что я никогда не умею читать какие-либо значения ...? Я даже не могу прочитать первую строку? Я делаю что-то супер очевидное неправильно?

+0

Был ли мой ответ работать на вас? – spoorcc

+0

@ user1149326 У меня еще не было возможности попробовать. Но спасибо. –

ответ

2

Возможно, опечатка, но для первой строки вы используете mscanf, который должен быть mfscanf для чтения из файла. При изменении этого значения видно, что ваша первая строка не соответствует, обратите внимание, что %s соответствует только одному слову, а затем останавливается в следующем пробеле. Чтобы прочитать (и отбросить) первую строку, используйте mgetl и скажите, чтобы она читала 1 строку. Если остальная часть входного файла будет отформатирована так же, вы можете использовать аргумент nitermfscanf, чтобы продолжить поиск до конца файла (EOF).

file_path = 'proper_log_with_fail.txt'; 

// open the file for reading 
fd=mopen(file_path,'r'); 

// Read/display header line 
number_of_lines_to_read = 1; 
header = mgetl(fd, number_of_lines_to_read); 
disp(header); 

// Scan all lines up until EOF 
niter = -1 
s = mfscanf(niter, fd, '%e %x'); 
disp(s) 

// Close the file after reading 
mclose(fd) 
Смежные вопросы