Repititives任务和for循环

我要检查200个表中的一个字节。 我不想写200行来检查它。 你有任何关于for循环的提示吗?

我的代码示例:

#include  #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]); } 

如果你有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]); } } 

如果你有多个循环使用它,它主要是有意义的。

由于无法更改数据结构,因此请考虑使用高级文本编辑器工具为您编写这些行。 它不是处理它的最正统的方式,但它起作用并且它至少是快速和清晰的。 在emacs中,我会考虑两个选项:

1:编写一个为您生成格式化字符串的循环:

 (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次( 这里是如何):

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

2)调用replace-regexp,输入: 并输出: \#也将保留预期的字符串,如此处所述。

当然,emacs只是一个建议。 我的答案的要点是表明文本编辑器本身有时(或者说很多次)可以帮助我们克服这些问题。 我希望它有所帮助!

干杯