構造体に入れた文字の出力について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら

トピックに返信する


答えを正確にご入力ください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: 構造体に入れた文字の出力について

Re: 構造体に入れた文字の出力について

#3

by みけCAT » 6年前

int*型のデータを要求するsscanf関数の書式%dに対し、char*型のデータを渡しているので、未定義動作です。
未定義動作が起きると、(定義上は)何が起こってもおかしくありません。

Re: 構造体に入れた文字の出力について

#2

by box » 6年前

忍者 さんが書きました: char camera;
sscanf(line, "%d",&pa.camera);
printf("%d\n",pa.camera);
[/code]

char型で定義しているメンバーcameraに整数型で値を読んで整数型で出力しているので、
そうなるのは必然ではないかと。
cameraというメンバーをchar型で扱いたいですか?それともint型などの整数として扱いたいですか?話はそこからです。

構造体に入れた文字の出力について

#1

by 忍者 » 6年前

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;}

ページトップ