• ベストアンサー

テーブルの値を1部取得は可能ですか?

char table[] = { "a", "b", "c", "d", "e", } if(引数 == 1){  a,b,cのみの値を取得 } else{  a,d,eの値のみ取得 } このような事は可能でしょうか? 調べていて別の人が書いたソースを参考ににcontinue文を見つけたのですが、この場合使ってもいいのか、どうやっていいのか分かりません。 ご教授願えませんか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.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』は繰り返し文を抜ける命令です。 ・以上。おわり。分かりますかね?上記の説明で。

noname#26266
質問者

お礼

ありがとうございます。

その他の回答 (2)

回答No.2

   こんな方法もある。 #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; }  

noname#26266
質問者

お礼

ありがとうございます。

  • koedame
  • ベストアンサー率33% (10/30)
回答No.1

結論から言うとできます。 ただ、上のだとエラー出るようなので少し改良して こちらで教えますね。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 はあまり使わないので覚えるのは少し大変ですが がんばってください。

noname#26266
質問者

お礼

ありがとうございます。

関連するQ&A

専門家に質問してみよう