c言語初心者なので説明に不備があったらすいません。
dousenという名前の構造体にBook2に入っている文字を入れて
その文字をちゃんと入れれているかどうか確認するために
出力してみたところ、なぜか数字に文字化けしていました。
どうすれば文字のまま入れることができるのでしょうか
#include<stdio.h>
#define BUFF 100
struct dousen{
char camera;
};
int main(void){
char line[BUFF];
struct dousen pa[100];
FILE *ofp;
int i;
ofp = fopen("Book2.csv","r");
if(ofp == NULL){
printf("file not open1\n");
fclose(ofp);
return -1;
}
fgets(line, BUFF-1, ofp);
while(fgets(line, BUFF-1, ofp) != NULL){
//printf("%s", line);
sscanf(line, "%d",&pa.camera);
printf("%d\n",pa.camera);
i++;
}
return 0;}
構造体に入れた文字の出力について
Re: 構造体に入れた文字の出力について
忍者 さんが書きました: char camera;
sscanf(line, "%d",&pa.camera);
printf("%d\n",pa.camera);
[/code]
char型で定義しているメンバーcameraに整数型で値を読んで整数型で出力しているので、
そうなるのは必然ではないかと。
cameraというメンバーをchar型で扱いたいですか?それともint型などの整数として扱いたいですか?話はそこからです。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
Re: 構造体に入れた文字の出力について
int*型のデータを要求するsscanf関数の書式%dに対し、char*型のデータを渡しているので、未定義動作です。
未定義動作が起きると、(定義上は)何が起こってもおかしくありません。
未定義動作が起きると、(定義上は)何が起こってもおかしくありません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)