- ベストアンサー
テーブルの値を1部取得は可能ですか?
char table[] = { "a", "b", "c", "d", "e", } if(引数 == 1){ a,b,cのみの値を取得 } else{ a,d,eの値のみ取得 } このような事は可能でしょうか? 調べていて別の人が書いたソースを参考ににcontinue文を見つけたのですが、この場合使ってもいいのか、どうやっていいのか分かりません。 ご教授願えませんか? よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
★最も分かりやすい回答! ・まずは、サンプルソースを紹介します。 ●サンプル char table[] = { 'a', ←『’』文字で文字定数を表現します。 'b', 『”』文字は文字列定数を表します。注意! 'c', 'd', 'e', }; ←付け忘れ。注意! if ( 引数 == 1 ){ printf( "%c\n", table[0] ); ←'a'を取得(参照・代入可能) printf( "%c\n", table[1] ); ←'b'を取得 printf( "%c\n", table[2] ); ←'c'を取得 } else{ printf( "%c\n", table[0] ); ←'a'を取得 printf( "%c\n", table[3] ); ←'d'を取得 printf( "%c\n", table[4] ); ←'e'を取得 } ●まとめ ・table[0] ⇒ 'a'を取得や代入など出来ます ・table[1] ⇒ 'b' ・table[2] ⇒ 'c' ・table[3] ⇒ 'd' ・table[4] ⇒ 'e' ・と対応していますので、取得するには『通し番号=添え字番号』などで 取得や、代入などが行えます。 ・『continue』は繰り返し文の中で使いますが、繰り返し文で取得しないのかな。 ・『continue』は、繰り返し文の処理をスキップして次の繰り返し条件へジャンプ 移動させる命令です。ちなみに『break』は繰り返し文を抜ける命令です。 ・以上。おわり。分かりますかね?上記の説明で。
その他の回答 (2)
- yaemon_2006
- ベストアンサー率22% (50/220)
こんな方法もある。 #include <stdio.h> int func(int n) { char *table = "abcde", c[4] = {'\0', }; int index_table[][3] = {{0, 3, 4}, {0, 1, 2,},}; int i; for(i = 0; i < 3; i ++) c[i] = table[index_table[n == 1][i]]; printf("%d : %s\n", n, c); return; } int main(void) { int i; for(i = 0; i < 3; i ++) func(i); return 0; }
お礼
ありがとうございます。
- koedame
- ベストアンサー率33% (10/30)
結論から言うとできます。 ただ、上のだとエラー出るようなので少し改良して こちらで教えますね。w 今回は要素数が5個です。 っとちなみに continue はループを最初からやり直せっ!という命令です。 char table[] = {'a','b','c','d','e'}; char box[ 5 ];//値を取得したときの格納用配列です(とりあえず5コ(そんなにいらないなら減らしてもいいです)) if(引数 == 1){ for( int n=0; n<5; n++ ) { if( 必要のないものの条件(範囲)(今回は 1 で)n == 1 ) continue;//これでループをもう一度上から(n は1増加します) box[ n ] = table[ n ];//値格納 } } else{ 上のif文を参考にしてください。 } まあ、今回は少し適当もはいっていますが、 感じ的にはこんな感じです。 continue はあまり使わないので覚えるのは少し大変ですが がんばってください。
お礼
ありがとうございます。
お礼
ありがとうございます。