Tag: 多维数组

将值分配给使用malloc创建的2D数组

我使用malloc创建了一个2D字符数组,并一直试图将其值赋给’\ 0’。 char **predicate_array = malloc(no_of_lines_in_data_map); for(int i = 0; i < no_of_lines_in_data_map; i++){ predicate_array[i] = malloc(1024 * sizeof(char)); predicate_array[i][0] = '\0'; } 但是,当我打印输出时,我得到: predicate_array[0] = (P; predicate_array[1] = predicate_array[2] = predicate_array[3] = predicate_array[4] = predicate_array[5] = predicate_array[6] = … … 有谁知道为什么第一个数组没有被设置为’\ 0’? 谢谢。

如何将memset用于双维数组?

我有一个双重昏暗。 数组: alarm_1_active_buffer[MAX_NUM_ALARMS][MAX_ALARM_STRING_SIZE]; 我想在填充之前清除缓冲区。 像这样 : for(index=0; index<MAX_NUM_ALARMS ; index++) { memset(&alarm_1_active_buffer[index], 0, MAX_ALARM_STRING_SIZE); memset(&alarm_1_active_buffer[index],string, MAX_ALARM_STRING_SIZE); } 它不起作用。

我使用malloc()将多维变量数组传递给C中的函数时遇到问题

这段代码应该在main中创建一个数组然后打印它,但每次运行它时我只得到一个全0的数组 #include #include void print(float **A, int w, int h){ int i, j; A = (float*) malloc(w*h*sizeof(float)); for (i=0;i<h;i++){ A[i] = (float*) malloc(w*sizeof(float)); } for (i=0; i<h; i++){ for(j=0; j<w; j++){ printf("%f ", A[i][j]); } printf("\n"); } } int main(void) { int i; int x_dimension=3; int y_dimension=2; float arr [3][2]={}; arr[0][0]=16.2; print(arr,x_dimension,y_dimension); return 0; }

C中多维数组程序中的错误

我已经制作了一个涉及多维数组的C程序(它打印了一个多维数组的字符)来回顾一下,但我遇到了一个bug。 我对该计划的预期成果是: . . . A . . . . . 但是我得到的输出是: . . A //Not meant to be ‘A’ but rather a ‘.’ A . . . . . 我想知道如何在位置[0] [2]中获得额外的’A’,以及如何解决这个问题。 这是我的代码: #include void initArray(char shape[][2]); main() { char shape[2][2]; int i, j; initArray(shape); shape[1][0] = ‘A’; printf(“%c\n%c\n%c\n”, shape[0][0], shape[0][1], shape[0][2]); printf(“%c\n%c\n%c\n”, shape[1][0], shape[1][1], […]

2个暗淡的数组和双指针

可能重复: 创建指向二维数组的指针 当我调用函数func4()和func5()时,我得到followinfg错误: func4()错误:无法将参数’1’的’short int(*)[3]’转换为’short int **’为’int func4(short int **)’| func5()错误:无法将参数’1’的’short int(*)[3]’转换为’short int **’为’int func5(short int **)’| 如何更正调用函数func4()和func5()时的错误? 这是我的代码: #include int func1(short mat[][3]); int func2(short (*mat)[3]); int func3(short *mat); int func4(short **mat); int func5(short *mat[3]); int main() { short mat[3][3],i,j; for(i = 0 ; i < 3 ; i++) for(j = 0 ; j < […]

为连续的2Darrays分配内存

我正在尝试创建一个generics函数,当为维度数组调用分配的连续内存时。 目标是实现类似下面的目标 所以要实现它 – 我正在使用的方程式 Type **pArray; int total_elements = ((rows * cols) + rows); pArray = (Type **) malloc(total_elements * sizeof(Type)); 我也对访问元素部分感到困惑。 我发现很难想象下面的代码如何填充上面数组的元素 for (row = 0; row < dim0; ++row) { for (col = 0; col < dim1; ++col) { /* For this to work Type must be a 1D array type. */ […]

C中二维数组的内存分配

我正在写一个multithreadingC程序,我有一个错误。 我有一个全局声明的2D数组array worker_table : int **worker_table; 并在主要分配如下: worker_table = (int**) calloc(number_of_workers*2,(sizeof(int))); 这是工作者function: void *Worker(void *worker_id) { my_id = (int)worker_id; //id of the worker printf(“Line 231\n”); printf(“My id is %d\n”,my_id); my_customer = worker_table[my_id][1];//line 233 printf(“Line 234\n”); int my id; 错误发生在第234行之前,我认为第233行出了什么问题,但我无法弄清楚它是什么。

C编程:从文本文件中读取(双)数字,逐行读取到2D数组

我有一个用excel创建的文本文件,其中包含一个尺寸为36×35的表。 值是双数(例如2.58),文本文件如下所示: 1.25 2.31 … 4.28 2.56 … 3.27 … … … 我知道表的大小(arr_row,arr_column),因此声明了一个动态的2D数组: double **MUDG_table; //dynamic allocate array of MUDG_table (1st Dimension) MUDG_table = calloc(arr_row,sizeof(int *)); //check if the memory has been allocated correctly if (MUDG_table==NULL) { printf(“Error allocating memory!\n”); //print an error message return 1; //return with failure } for (cv02=0;cv02<arr_row;cv02++) { //dynamic allocate […]

创建connect 4 board c程序时出现分段错误

我正在创建一个连接4游戏……我已经做了很多事情; 然而,我创建我的电路板的方式是静态的,它需要是动态的,所以我已经制定了一个辅助程序来解决这个问题,然后在我的主程序中实现它。 出于某种原因,这段代码中的if&else-if条件会产生分段错误,我无法弄清楚为什么…… // for the rows/columns of the board for(row = num_rows – 1; row >= 0; row–){ printf(“|”); for(col = 0; col < num_columns; col++){ if(aPtr[row][col] == '0') { printf("| X "); } else if(aPtr[row][col] == '1') { printf("| O "); } else { printf("| "); } } puts("||"); } 当我评论这些条件时,电路板打印就好了,看起来像这样 —— Connect […]

在函数中使用2D数组:错误

我尝试在2D数组中设置值并使用Function打印它。 但我很难将数组发送到函数。 #include void SetArr(int (*arr)[], int n); void PrintfArr(int (*arr)[], int n); int main() { int arr[100][100]; for(int i=0; i<100; i++) for(int j=0; i<100; j++) arr[i][j]=0; //initiallize Array int size; printf("input Size : "); scanf("%d", &size); SetArr(arr, size); PrintfArr(arr, size); return 0; } void SetArr(int (*arr)[], int n) { int i, j; for(i=0; i<n; […]