有两种方式,静态或动态。使用哪一个取决于您是否知道行数。
静止的
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define ROWS 10
#define COLUMNS 9
#define MAX_STRING_SIZE 256
int main(){
char table[ROWS][COLUMNS][MAX_STRING_SIZE];
//EXAMPLE OF USE
for(i=0; i<ROWS; i++)
for(j=0; j<COLUMNS; j++)
strcpy(table[i][j], "hi");
}
动态
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define ROWS 10
#define COLUMNS 9
#define MAX_STRING_SIZE 256
int main(){
char ***table = calloc(ROWS, sizeof(char**));
int i, j;
for(i=0; i<ROWS; i++){
table[i] = calloc(COLUMNS, sizeof(char*));
for(j=0; j<COLUMNS; j++){
table[i][j] = calloc(MAX_STRING_SIZE, sizeof(char));
}
}
//FREE THE TABLE
for(i=0; i<ROWS; i++){
for(j=0; j<COLUMNS; j++){
fprintf(stderr, "%s, ", table[i][j]);
free(table[i][j]);
}
fprintf(stderr, "\n");
free(table[i]);
}
free(table);
}
当然,您需要检查calloc调用是否返回NULL。
用calloc分配字符串可以确保字符串将用零初始化。
该算法将创建10行,其中9列是每列256个字符的字符串。