声明一个二维字符串数组

时间:2015-04-27 03:26:29

标签: c arrays string char

我想现在,如果这是在C中声明字符串数组的正确方法,可以这样:

#include <stdio.h>
#include <string.h>
#define rows 6
#define colu 2

char* bdato [rows][colu]={/*here using the pointer, I'm not sure*/
{"tc","Torta Cubana  "},
{"th","Torta Huatulco"},
{"tm","Torta Mexicana"},
{"tr","Torta Rusa    "},
{"r ","Refresco      "},
{"a ","Agua sabor    "}};

int impri(){
  int x;
  for (x=0;x<6;x+=1) {
    printf("%s %s \n",bdato[x][0],bdato[x][1]);
  }
  return 0;
}

1 个答案:

答案 0 :(得分:1)

语法明智是正确的。虽然无论何时声明指向字符串文字的指针,都应将其声明为const,因为尝试修改字符串文字的内存位置是未定义的行为(错误)。

如果您需要其他人查看您的代码(例如在SO上提问时),习惯用英语命名您的变量和函数也是明智的。

至于是否正确存储这样的数据,这取决于您尝试对数据做什么。如果您希望字符串彼此相关,就像在简单的数据库中一样,最好创建一维结构数组,以显示这对字符串是相关的:

typedef struct
{
  const char* something;
  const char* something_else;
} my_struct_t;

my_struct_t  data [X] = 
{
  {"tc","Torta Cubana  "},
  {"th","Torta Huatulco"},
  ...
};

(当然,在实际的应用程序中,您可以为变量赋予更有意义的名称)