ページ 11

読み捨て処理

Posted: 2009年6月01日(月) 16:05
by ほのか
いつもお世話になっております。
ソースについては添付ファイルをご覧いただきたいのですが、このたびまたわからないことがあったので質問させていただきます;

処理区分や削除・照会・変更したいデータの番号を入力する処理のことで以前も質問させていただいたのですが、上手くいったと思っていたのですが実際は入力した複数文字が1文字目以降、確保していない領域に書き込まれているということがわかりました。

1文字目以降を配列等に書き込ませるなどして読み捨て処理をするにはどのようにしたら良いのでしょうか??;
それから、課題担当の方にdefineで比較のみ実施する場合は配列等にdefineの値を設定する必要はないと言われたのですが、よく意味がわかりません;

Re:読み捨て処理

Posted: 2009年6月01日(月) 16:24
by pooka
ぱっと見ですが
>char num;
>scanf("%s",&num);

scanf("%c",&num);
では?

Re:読み捨て処理

Posted: 2009年6月01日(月) 16:30
by ほのか
回答ありがとうございます。
以前%cに変えてみたのですが、この場合「11」と入力しても「1」のデータが表示されたりしてしまいます;

Re:読み捨て処理

Posted: 2009年6月01日(月) 16:45
by pooka
なら
>char num;
char num[BUFSIZ];

>scanf("%s",&num);
scanf("%s",num);

>no = atoi(&num);
no = atoi(num);
にそれぞれなおしてみてください。

Re:読み捨て処理

Posted: 2009年6月01日(月) 16:54
by ほのか
回答ありがとうございます!
無事修正できました^^ありがとうございました^^

%sの場合、fflushは必要ないのでしょうか??
また、defineの質問についてわかる方いらっしゃいましたらよろしくお願いいたします;

Re:読み捨て処理

Posted: 2009年6月01日(月) 17:15
by pooka
>defineで比較のみ・・・
憶測ですが、例えば#define DANSEI "1"としているのに
shinki関数などでchar dansei[2]= DANSEI;として
strcmp(temp.sei,dansei)
としていることではないでしょうか?
strcmp(temp.sei,DANSEI)
でいいということではないでしょうか?

Re:読み捨て処理

Posted: 2009年6月01日(月) 17:19
by ほのか
回答ありがとうございます!
やっと理解できました^^
いつも本当にありがとうございます^^