c字符串数组比较



在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]。

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

所以files[i]的类型是"指向字符的指针数组",但您将其用作"指向字符指针"。这是错误的。

也就是说,还不清楚你想做什么……也许只是:

char files[5][13];

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

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

并使用检查:

if (files[i][0])

以检查文本是否已初始化。

char* files[4][12]char *的2D数组,而不是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]);
}

相关内容

  • 没有找到相关文章

最新更新