C言語で固定長ファイルを構造体に読み込む処理にて、指定バイト数の切り出しがうまく組めません。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct{
char sStr1[3] ;
char sNum[3] ;
char sDate[6] ;
}stTest ;
const char sLine[3][20] = { "xABCxx123xx180730xx","xXYZxx456xx180731xx","xEFGxx789xx180801xx" };
void main(){
stTest kTest[3] ;
int iLp;
for( iLp = 0; iLp < 3 ; iLp ++ ){ //2Bytes目から3バイト文字列を構造体に格納する。 strncpy( kTest[iLp].sStr1, &sLine[iLp][1], 3 ) ; //7Bytes目から3バイト文字列を構造体に格納する。 strncpy( kTest[iLp].sNum, &sLine[iLp][6], 3 ); //12Bytes目から6バイト文字列を構造体に格納する。 strncpy( kTest[iLp].sDate, &sLine[iLp][11], 6 ) ; printf( "sTr1[%s] sNum[%s] sDate[%s]\n", kTest[iLp].sStr1, kTest[iLp].sNum, kTest[iLp].sDate);
}
return ;
}
sTr1[ABC] sNum[123] sDate[180730]
sTr1[XYZ] sNum[456] sDate[180731]
sTr1[EFG] sNum[789] sDate[180801]
としたいのですが、上記を実行すると以下のような結果となります。
sTr1[ABC123180730@] sNum[123180730
@] sDate[180730@] sTr1[XYZ456180731
@] sNum[456180731@] sDate[180731
@]
sTr1[EFG78918081x╗] sNum[78918081x╗] sDate[18081x╗]
どの部分が問題なのか、ご指導お願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/30 10:29