如何迭代char指针数组

时间:2015-06-29 15:11:44

标签: c arrays pointers

如何以有效的方式迭代我的文件变量?

我应该添加NULL作为我的最后一个值,还是做其他事情?

char *files[] =
        {
            "c1.txt",
            "r1.txt",
            "t2.c",
            "d.cpp",
        };

2 个答案:

答案 0 :(得分:1)

有几种可能性。

  • 您可以添加NULL作为最终条目,正如您自己建议的那样
  • 如果阵列来自其他来源(如磁盘上的文件),只需保留一个您正在阅读的行数的计数器
  • 但是如果数组是在源中给出的,那么它的长度是常数,您只需检查它有多少元素(通过减去行号)
  • 此外,常量数组的大小为sizeof(files) / sizeof(char*)

答案 1 :(得分:0)

你也可以定义像

这样的宏
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
...
int i;
for(i = 0; i < ARRAY_SIZE(files); i++)
{
    printf("%s\n", files[i]);
}

这适用于任何类型的数组,无论其类型如何。