我試圖讀取txt文件中的數據。 txt文件有多個條目,每個條目佔據一個新的行,並且每個條目具有由一些符號(比如空格'')分隔的可變長度的十六進制字節數據。樣品txt文件看起來像下面fscanf閱讀空間分隔數據,直到返回
e4 e2 e2 e1 ff\n
f2 a2 22 34\n
ff ee dd\n
在循環中使用的scanf(FP,「%2X」,緩衝液+偏移量),我試圖每個字節加載到字節緩衝器中,直到每條線的端,標誌着一個完整的記錄。主要的問題是檢測換行符,因爲scanf完全忽略它並跳到下一行。我的原始代碼是
do{
counter=fscanf(datain,"%2x",buffer1+offset);
fprintf(stdout,"%#2x ",buffer1[offset]);
offset+=counter;
}while(!feof(datain));
爲什麼你對0x0a進行硬編碼,可能更好地使用'\ n'而不是? – t0mm13b
需要'if(counter == 2 && followingymbol == 0x0a)'。否則'followymbol'可能是之前的值,如果'counter'的值爲EOF或者1. – chux
'fscanf(...,「%2x%c」,...,followingymbol);'應該是'fscanf ... ,「%2x%c」,...,&followingymbol);'(missing&) – chux