2016-10-14 4 views
1

나는 200 개의 테이블에서 1 바이트를 검사했다. 확인을 위해 200 줄을 쓰고 싶지 않습니다. for 루프를 사용하기위한 팁이 있습니까? 코드의Repititives tasks for for 루프

내 예 : 당신이 자료 구조를 변경할 수 없기 때문에

#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

배열 배열 사용을 권합니다. Like,'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 : 이맥스, 나는 두 가지 옵션을 고려할 것 (copy_iter "CU_ASSERT_EQUAL(55, my_tab_%s[5]);" 200)을 호출하면 당신이

2를 기대 돌아갑니다

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

그리고 : 당신을위한 포맷 문자열을 생성하는 루프를 작성 : 일반 문자열을 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) 입력을, 대체 - 정규 표현식 호출 <CHANGE_THIS> 및 출력 : here 설명으로 \# 또한 예상 스트링을 좌측 것이다.

물론 이맥스는 단지 제안 일뿐입니다. 내 답변의 요점은 때로는 (또는 여러 번) 텍스트 편집기 자체가 이러한 문제를 극복하는 데 도움이 될 수 있다는 것을 보여줍니다. 도움이되기를 바랍니다!

건배

+0

"내 코드를 복사/붙여 넣기"하고 싶지는 않지만 실제로 내 바이트를 확인하는 루프를 구현하고 싶지만 내 미래의 프로젝트에 대한 답을 고려해야합니다! – Jguillot

+0

어쨌든 받아 들인 답을 따르는 것이 어쨌든 많이 필요합니다. (여러분의 모든 배열이 같은 크기를 가지고 있다면) –