ページ 11

出力される値がおかしい

Posted: 2012年6月30日(土) 15:58
by taz
こんにちは。C言語に関して質問があります。
データを新規登録するためのソースコードです。
csv形式で、キーボードから入力された値をテキストファイルに出力します。

/* 新規登録 */

#include <stdio.h>
#include <stdlib.h>

FILE *fp;
char *fname = "comma.csv";


main()
{
int no;
int ret;
printf("---会員管理システムメニュー---\n\n");
printf("1.新規登録\n");
printf("2.変更\n");
printf("3.削除\n");
printf("4.一覧表示\n");
printf("No? ");
ret=scanf("%d",&no);
if(no == 1)
{
ret = add_record();
}
}

int add_record()
{
int no;
char name;
char adress;
char tel;
char mail;
int choice;

printf("\n会員番号(0-10数値)? ");
scanf("%d",&no);
printf("会員名称(漢字,英語)? ");
scanf("%s",&name);
printf("住所(漢字,数字50文字)? ");
scanf("%s",&adress);
printf("電話番号(半角文字-で区切る)? ");
scanf("%s",&tel);
printf("メールアドレス(半角英数字)? ");
scanf("%s",&mail);
printf("新規登録しますか?(1:yes 2:no)? ");
scanf("%d",&choice);

fp = fopen(fname,"w");
if(fp == NULL)
{
printf("%ファイルが開けません\n",fname);
return -1;
}

fprintf(fp,"%d,%s,%s,%s,%s",no,name,adress,tel,mail);


fclose(fp);

printf("%sファイル書き込みが終わりました\n",fname);
return 0;
}

最初に1を入力し新規登録画面に入ります。
次に会員番号を1で入力。
会員名称をaで入力。
住所をaで入力。
電話番号をaで入力。
メールアドレスをaで入力。
新規登録しますか? で1を入力。
その結果、テキストファイルを見てみると、
0,(NULL),(NULL),(NULL),-・h という出力結果になります。

期待している動作は、キーボードから入力されたとおりに出力されること。
新規登録しますか?と聞かれた時に、2を選択したらmain()に処理が戻る事です。

どなたかアドバイスよろしくお願いします。

Re: 出力される値がおかしい

Posted: 2012年6月30日(土) 16:01
by box
taz さんが書きました:

コード:

	char name;
	char adress;
	char tel;
	char mail;
1バイトだけの定義で本当にいいんでしょうか?

Re: 出力される値がおかしい

Posted: 2012年6月30日(土) 16:26
by taz
ありがとうございます。問題を解決することが出来ました。またよろしくお願いします。

Re: 出力される値がおかしい

Posted: 2012年6月30日(土) 16:27
by taz
解決いたしました。