アプリ版:「スタンプのみでお礼する」機能のリリースについて

文字列を入力し、入力された文字列を逆順で出力するプログラムが作りたいです。

条件としてはgetchar文を使う事です。

#include<stdio.h>

int main(void){


int ch, i = 0, a = 0, b;
char str1[256], str2[256];


while ((ch = getchar()) != EOF){

str1[i] = ch;
i++;
b = i;

for(a = 0; a >= b; a++){

str2[a] = str1[i];
i--;
}
printf("%c", str2[a]);
}
return 0;

}

このようなプログラムを作りましたが
実行しても空白しかでてこないです。。。。
分かる方がいらっしゃいましたらぜひ教えていただきたいです。

A 回答 (7件)

No5です。

失礼しました。こちらが正しいです。
#include<stdio.h>
int main(void)
{
int ch,i = 0, j;
char str1[256];
while ((ch = getchar()) != EOF) {
str1[i] = ch;
i++;
}
for (j = i-1; j >= 0; j--){
printf("%c", str1[j]);
}
printf("\n");
return 0;
}
    • good
    • 0
この回答へのお礼

有難うございます!
なるほど、、、となりました!

お礼日時:2019/10/25 10:28

ひねって


#include <stdio.h>
int main()
{
char str[256+1] = {0};
int ch, n = sizeof str-1;
while ((ch = getchar()) != EOF) {
str[--n] = ch;
}
printf("%s\n", str+n);
}
とか... ダメ?
    • good
    • 0

あなたのプログラム修正しました。

いかのようにしてください。
#include<stdio.h>
int main(void)
{
int ch,i = 0, j;
char str1[256];
while ((ch = getchar()) != EOF) {
str1[i] = ch;
i++;
}
for (j = i; j >= 0; j--){
printf("%c", str1[j]);
}
printf("\n");
return 0;
}
    • good
    • 0

前半:ためる処理。


str1[i]にgetcharしたものをどんどんi++しながらためて、EOFになるまで繰り返す。

後半:表示する処理
str1[i]にたまったものを、どんどんi--しながら出力する。i==0の物を出力し終わったら終わり。
    • good
    • 0

>文字がすべて入力された後に



全て入力された。と判定する条件はなんでしょう?
# セオリーとしてはEnterキー押下…でしょうか。
# ループの終了条件がEOFなので、getchar()がEOFを返した時。でもいいのかもしれませんが。


str1[]に蓄積して行ったら、「文字列反転」とかで検索すると例が見つかるでしょう。
# getchar()だと…DeleteキーやBackSpaceキー、カーソルキーなどが押された時にどうするか…というのもありますけどね。
    • good
    • 0

どのタイミングで逆順にしたものを表示するんでしょう?




>str1[i] = ch;
>i++;
ここで、iが加算されます。
# str1[i]の値は不定です。iが指しているのは『次に』入力された内容が格納される場所ですから。

>str2[a] = str1[i];

不定値をstr2[a]に格納します。

>i--;

iを巻き戻します。

>printf("%c", str2[a]);

aの値はループ終了時の値です。
    • good
    • 0
この回答へのお礼

文字がすべて入力された後に
逆順のものを出力したいと考えています。

お礼日時:2019/10/24 21:20

文字列を溜めてから、反対側から出すようにしないと目的のものはできませんよね。


100文字打ち込んだとしたら、100文字打ち込まないと出力には進めません。

そう考えてループ処理を見直してみればいかがでしょうか。
    • good
    • 0
この回答へのお礼

ため込み方がよくわからなくて、、、

getcharを使うと一文字ずつ入力されているか否かを判断するため
どのように処理すればいいのかヒントございませんか??
C言語を勉強し始めたのが最近でして、、

お礼日時:2019/10/24 21:19

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