ページ 1 / 1
複数ある同じ条件のwhileをまとめる方法を教えてください
Posted: 2020年10月22日(木) 21:45
by からし
コード:
//***入力された文字列を文字列、1文字ずつ、10進数、16進数それぞれに変換して表示***//
#include <stdio.h>
#define 10 //格納上限
int main(void)
{
char moji[MAX] ;
//文字入力
printf("文字列を入力してください"=>);
scanf( "%s", moji );
//文字列
printf("\n---文字列---\n");
printf( "%s",moji );
//1文字ずつ
printf("\n---文字---\n");
int i = 0;
while( moji[i] != '\0' ){
putchar( moji[i] );
printf( ", " );
i++;
}
//10進数
printf("\n---10進数---\n");
int i = 0;
while( moji[i] != '\0' ){
printf( "%d, ",moji[i] );
i++;
}
//16進数
printf("\n---10進数---\n");
int i = 0;
while( moji[i] != '\0' ){
printf( "%x, ",moji[i] );
i++;
}
printf("\n");
return 0;
}
上記のようなコードを組んだのですが、同じ条件のwhile文を3回も使うのでまとめたいのですが、カウント変数iをどのタイミングで宣言し、初期化すればいいのか分からず、素直に1回1回宣言しています。
知識ある方のご意見をお願いします。
Re: 複数ある同じ条件のwhileをまとめる方法を教えてください
Posted: 2020年10月22日(木) 22:10
by みけCAT
からし さんが書きました: ↑4年前
同じ条件のwhile文を3回も使うのでまとめたいのですが、
以下のように、ループを使ってまとめることができそうですね。
コード:
//***入力された文字列を文字列、1文字ずつ、10進数、16進数それぞれに変換して表示***//
#include <stdio.h>
#define MAX 10 //格納上限
int main(void)
{
const char* headers[] = {"文字", "10進数", "10進数"};
const char* formats[] = {"%c", "%d", "%x"};
char moji[MAX] ;
//文字入力
printf("文字列を入力してください=>");
scanf( "%s", moji );
//文字列
printf("\n---文字列---\n");
printf( "%s",moji );
for (int j = 0; j < 3; j++) {
printf("\n---%s---\n", headers[j]);
int i = 0;
while( moji[i] != '\0' ){
printf(formats[j], moji[i] );
printf( ", " );
i++;
}
}
printf("\n");
return 0;
}
からし さんが書きました: ↑4年前
カウント変数iをどのタイミングで宣言し、初期化すればいいのか分からず、
使う最初の所または関数の先頭で宣言し、ループに入る前のタイミングで値を設定すればいいでしょう。
からし さんが書きました: ↑4年前
素直に1回1回宣言しています。
このように、同じ変数を同じスコープで複数回宣言するとエラーになるはずです。
また、このプログラムには他にもコンパイルエラーになる間違いがあります。