c字符串数组比较

时间:2012-09-01 19:41:09

标签: c arrays string compare

在C中工作,我正在使用函数

中的char *返回值填充数组
 char* files[4][12];
 int i = 0;
 for (;;)
    {
      char* file = get_value();
      strcpy(files[i],file);
      i++;
      if (i > 4 || external_condition)
      break;

     }

      // When I break out of
      // my for loop the following
      // code executes

      for (i = 0; i < 5; i++)
       {
        if (files[i] != NULL)
        manipulate(files[i]);
       }

我的问题是,如果我在没有为文件的所有元素赋值的情况下突破第一个for循环,那么我在第二个for循环中的比较就会失败。如果只有文件[0]和文件[1]有内容,则循环处理文件[2],文件[3]和文件[4]。

2 个答案:

答案 0 :(得分:3)

files被声明为“指向char的指针数组”。或者,如果您愿意,作为指向char的二维指针数组。

所以files[i]的类型是“指向char的指针数组”,但你只是将它用作“指向char的指针”。那是错的。

那就是说,目前尚不清楚你想做什么......也许只是:

char files[5][13];

会更有意义。 13因为你可能需要13个char字符串(8.3为8 + 3 + 1 = 12加1为结尾NUL),你似乎使用其中的5个。然后将它们初始化为零:

memset(files, 0, sizeof(files));

并使用支票:

if (files[i][0])

检查文本是否已初始化。

答案 1 :(得分:0)

char* files[4][12]char *的二维数组,而不是char。也许你的意思是你的代码如下......我建议你听别人说的话。我只是发布一个仍然有效的缩短版本。

char files[5][12] = { { 0 } };
int i = 0;

do {
  strcpy(files[i], get_value());
} while (++i <= 4 && !external_condition);

while (i) {
  manipulate(files[--i]);
}