電子書籍の厳選無料作品が豊富!

以下の手順に従ってプログラムを作成せよ.適宜printf を利用して,入力支援(「文字列を入
力して下さい」などの画面表示)を行うこと.
(1) キーボードから文字列を入力し,文字配列s[64] に格納する.
(2) 文字配列s[64] に格納されている文字列を逆順にしてt[64] に格納する(配列全部を逆
順にするのではなく,NULL 文字までの要素を逆順にする).
(3) t[64] を画面表示する.
ポインタ使用不可、ヘッダファイル<stdio.h>だけ

入力された文字を反転させるということでしょうか??

#include <stdio.h>

int main(void){
int i;
char s[256];
char t[256];

printf("文字列を入力:");
scanf("%s" , s);

for ( i = 0; i < '\n'; i++ ){
t[i] = s[i];
}


printf("文字列の逆順は%s",t);

getchar();
getchar();
return(0);
}
これだとただ入力された文字を出力するだけになってしまいますよね・・・・。どうすればいいのでしょうか?

A 回答 (3件)

> ヘッダファイル<stdio.h>だけ



strlen()を使ってはいけないという制約がありますので、
s[]のどこまで使っているかを自分で求める必要があります。

例えば、abcdefg <Enter> と入力したならば、終端の'\0'を
除いてs[0]~s[6]の7バイトを使っていることになりますね。
まず、ここまでのコードを考えてみてはいかがでしょうか。

なお、仕様にはs[64], t[64]と書いてありますので、

> char s[256];
> char t[256];

この定義は仕様に反しています。

この回答への補足

#include <stdio.h>

int main(void){
int i;
char s[64];
char t[64];
int len;

printf("文字列を入力:");
scanf("%s" , s);

i = 0 ;
while(1){
if(s[i] == '\0'){
len = i ;
break ;
}
i++ ;
}

printf("文字列の逆順は");
for( i = 0; i <= len-1; i++ ){
t[i] = s[len-1-i];
printf("%c",t[i]);
}

getchar();
getchar();
return (0);
}
こんな感じでいいのでしょうか?

補足日時:2007/11/20 21:06
    • good
    • 0

> こんな感じでいいのでしょうか?



と、人に尋ねるよりも前に、ご自分のところで
動作を確認してみる、という発想はないですか?

この回答への補足

自分でちゃんと実行しました。コンパイルもエラーなしでいきした。その上で聞いていますよ。
そりゃそこまで人任せではありませんから。
ただ僕のつくったプログラムだと
たとえばyamadaと入力するとadamayと出力できるのですが
やまだと日本語入力すると文字化けしちゃうのです・・・・。
これを解決する方法とかありますか?

補足日時:2007/11/22 16:25
    • good
    • 0

反転ってどういう意図で使っているか分かりませんが、


あなたが書いたとおり、
>NULL 文字までの要素を逆順にする
これをやればいいのでは?

期待されているのは
以下のような結果だと思いますよ。

文字列を入力:
abcdefg
文字列の逆順は
gfedcba
    • good
    • 0

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