#2
by みけCAT » 4年前
からし さんが書きました: ↑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回宣言しています。
このように、同じ変数を同じスコープで複数回宣言するとエラーになるはずです。
また、このプログラムには他にもコンパイルエラーになる間違いがあります。
[quote=からし post_id=155228 time=1603370737]
同じ条件のwhile文を3回も使うのでまとめたいのですが、
[/quote]
以下のように、ループを使ってまとめることができそうですね。
[code]
//***入力された文字列を文字列、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;
}
[/code]
[quote=からし post_id=155228 time=1603370737]
カウント変数iをどのタイミングで宣言し、初期化すればいいのか分からず、
[/quote]
使う最初の所または関数の先頭で宣言し、ループに入る前のタイミングで値を設定すればいいでしょう。
[quote=からし post_id=155228 time=1603370737]
素直に1回1回宣言しています。
[/quote]
このように、同じ変数を同じスコープで複数回宣言するとエラーになるはずです。
また、このプログラムには他にもコンパイルエラーになる間違いがあります。