2016-10-14 8 views
1

私は200テーブルで1バイトをチェックしました。 私はそれをチェックするために200行を書きたくありません。 forループでそれを行うためのヒントはありますか?Repititivesのタスクとループ

コードの私の例:あなたがデータ構造を変更することはできませんので

#include <stdio.h> 
#include "CUnit/Basic.h" 
#include "CUnit/Console.h" 
#include "CUnit/Automated.h" 
#include "CUnit/CUCurses.h" 
#include "CUnit/TestDB.h" 

void _testu(){ 
    CU_ASSERT_EQUAL(55, my_tab_0[5]); 
    CU_ASSERT_EQUAL(55, my_tab_1[5]); 
    CU_ASSERT_EQUAL(55, my_tab_2[5]); 
    CU_ASSERT_EQUAL(55, my_tab_3[5]); 
    . 
    . 
    . 
    CU_ASSERT_EQUAL(55, my_tab_n[5]); 
} 
+1

質問:なぜあなたは 'n'配列を持ち、あなたの配列を含む配列はありませんか? – RichouHunter

+1

配列の配列を使用することをお勧めします。同様に、 'char my_tab [200] [5];' –

+0

私のデータ構造は変更できません。 – Jguillot

答えて

3

あなたは、n個の独立した配列を持っている場合は、ポインタの配列を構築するために試みることができる:

char *my_tab[] = { my_tab_0, my_tab_1, m__tab_2, ... my_tab_n }; 

あなたは、彼らが簡単に行うことができます。

void _testu(){ 
    int i; 
    for(i=0; i<=n; i++) { 
     CU_ASSERT_EQUAL(55, my_tab[i][5]); 
    } 
} 

をこれは主に意味をなさないそれを使用するループが複数ある場合

+0

私の答えよりも明確にクリーナー+1 –

+0

'my_tab_ 'これはエディタではまだ役に立ちます –

+0

my_tab_0のサイズをどのように補うことができますか? 'sizeof(my_tab [0])'は私に正しいものを与えません – Jguillot

1

、あなたのためにこれらの行を記述するために、高度なテキストエディタツールを使用することを検討してください。それはそれを処理する最も正統な方法ではありませんが、それは動作し、少なくとも迅速かつ明確です。

1::Emacsでは、私は2つの選択肢を検討する

(defun copy_iter (strng times) 
    (let ((result)) 
    (dotimes (i times result) 
     (setq result (concat result "\n" (format strng i)))))) 

そして(copy_iter "CU_ASSERT_EQUAL(55, my_tab_%s[5]);" 200)はあなたが

2期待するものを返します呼び出し:あなたのためにフォーマットされた文字列を生成し、ループを記述します。一般的な文字列を200回コピーし、正規表現を使用してマーカーを置き換えます。

1)一般的なマーカー200回(hereがどのようである):

" 
CU_ASSERT_EQUAL(55, my_tab_<CHANGE_THIS>[5]); 
CU_ASSERT_EQUAL(55, my_tab_<CHANGE_THIS>[5]); 
CU_ASSERT_EQUAL(55, my_tab_<CHANGE_THIS>[5]); 
CU_ASSERT_EQUAL(55, my_tab_<CHANGE_THIS>[5]); 
CU_ASSERT_EQUAL(55, my_tab_<CHANGE_THIS>[5]); 
... 

2)置き換える-regexpに、入力して呼び出します。<CHANGE_THIS>と出力:hereが説明したように\#も、予想される文字列を残します。

もちろん、emacsは単なる提案です。私の答えの要点は、テキストエディタ自体がこのような問題を克服するのに役立つことがある(または何度も)ことを示すことです。私はそれが助けて欲しい!

乾杯

+0

私は自分のコードを "コピー/ペースト"したくないのですが、実際に私のバイトをチェックするループを実装したいのですが、私の将来のプロジェクトの答えを考慮に入れています! – Jguillot

+0

あなたはかなり受け入れられた答えに従ってください。私はそれがもっときれいであることを認めています(あなたのすべての配列が同じサイズを持っているならば) –

関連する問題