dポイントプレゼントキャンペーン実施中!

6つの塩基(A、T、G、C)を入力して、それを一列に並べるというものなのですが、うまくいかないので、質問させていただきます。
#include<stdio.h>
main()
{
char b1,b2,b3,b4,b5,b6;
printf("6つの塩基を入力してください。\n");
printf("1つ目の塩基は?\n");
b1=getchar();
printf("2つ目の塩基は?\n");
b2=getchar();
printf("3つ目の塩基は?\n");
b3=getchar();
printf("4つ目の塩基は?\n");
b4=getchar();
printf("5つ目の塩基は?\n");
b5=getchar();
printf("6つ目の塩基は?\n");
b6=getchar();
printf("配列は%c%c%c%c%c%cです。\n",b1,b2,b3,b4,b5,b6);
}
こうすると実行したときに
b1=
b2=b3=
b4=b5=となってうまく実行できないんですが、どうしたらよいのでしょうか?
ちなみに「getcharと変数とprintfとscanfを使う」と問題の条件に書いてあるので、これだけで作れという問題ですが・・・

A 回答 (4件)

#include <stdio.h>


int
main(void)
{

char b[7], d;
int i, c;

printf("6つの塩基を入力してください。\n");
for (i = 0; i < 6;) {
printf("%dつ目の塩基は?[ATGC] >> ", i + 1);
c = getchar();
scanf("%c",&d);
switch (c) {
case 'A':
case 'T':
case 'G':
case 'C':
b[i++] = c;
}
}
b[6] = 0;
printf("配列は%s\n", b);
return 0;
}
    • good
    • 0

原因は、改行が次のgetchar()で拾われるということだから、改行を読み捨てる


b1=getchar();getchar();
とかしてやればいいかも・
    • good
    • 1

「XX=getchar();」部分をループ(while)して、


入力待ち状態にすればよいのではないでしょう。

while(c=getchar() != EOF){
if c='A'・・・・・{
b1=c;
berak;
}
}
こんな感じで。(そのままはNGなので、修正してください)
    • good
    • 0

scanf使ってないよ?


scanfで改行入力を飛ばしてやればいいんじゃないかな
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!