前提・実現したいこと
fscafを用いて読み込んだデータをprintfで表示したいのですが、
思ったようにデータが取得できません。
該当のソースコード
fassion.h
c
1#ifndef FASSION_H 2#define FASSION_H 3//------------------------------------------------ 4 5//------------------------------------------------ 6// マクロ定義(Macro definition) 7//------------------------------------------------ 8#define D_FASSION_IDSIZE (6) // IDバイト数 9#define D_FASSION_TYPESIZE (5) // 種類バイト数 10#define D_FASSION_COLORSIZE (4) // 色バイト数 11 12//------------------------------------------------ 13// 型定義(Type definition) 14//------------------------------------------------ 15// 服 16typedef struct{ 17 char fassion_id[D_FASSION_IDSIZE]; // ID 18 char type[D_FASSION_TYPESIZE]; // 種類 19 char color[D_FASSION_COLORSIZE]; // 色 20 int pattern; // 柄(0:なし 1:あり) 21}S_FASSION_DATA; 22 23//------------------------------------------------ 24// プロトタイプ宣言(Prototype declaration) 25//------------------------------------------------ 26int memorycatch(void); 27 28//------------------------------------------------ 29#endif 30
main.c
c
1#include <stdio.h> 2#include "fassion.h" 3 4int main(void){ 5 memorycatch(); 6}
fassion.c
c
1#include <stdio.h> 2#include "fassion.h" 3#include <stdlib.h> 4#include <string.h> 5#define _CRT_SECURE_NO_WARNINGS 6 7//------------------------------------- 8//メモリ確保 9//------------------------------------- 10int memorycatch(){ 11 12 FILE * fp = NULL; 13 S_FASSION_DATA * pFdata = NULL; 14 15 // メモリ領域をヒープメモリに確保 16 pFdata = (S_FASSION_DATA *)malloc(sizeof(S_FASSION_DATA)); 17 if(pFdata == NULL){ 18 return -1; 19 } 20 21 // fp = fopen("./fasson/fassion.txt", "r"); 22 fp = fopen("fassion.txt", "r"); 23 24 25 if(fp == NULL){ 26 return -1; 27 } 28 while(fscanf(fp, "%s, %s, %s, %d", 29 pFdata->fassion_id, 30 pFdata->type, 31 pFdata->color, 32 pFdata->pattern) != EOF){ 33 printf("ID:%s タイプ:%s 色:%s 柄:%d\n", 34 pFdata->fassion_id, 35 pFdata->type, 36 pFdata->color, 37 pFdata->pattern); 38 } 39 40 return 0; 41}
fassion.txt
txt
1P00001, skirt, pink, 0 2
printfで表示した結果
理想(正)
ID:P00001 タイプ:skirt 色:pink 柄:0
現在(誤)
ID:P00001, タイプ:, 色:kカ 柄:9836336 ID:skirt, タイプ: 色:kカ 柄:9836336 ID:pink, タイプ: 色:kカ 柄:9836336 ID:0 タイプ: 色:kカ 柄:9836336
試したこと
- テキストの変更
- 構造体の文字列(type,color)のサイズ変更
初歩的な質問だとは思いますが、よろしくお願いいたします。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/02/01 14:59