Tag: 数组

尝试在C中打印矩阵时未定义参考函数

我有简单的prinitng矩阵方法。 void printMatrix(int matrix){ int i; for(i=0;i<sizeof matrix/sizeof matrix[0];i++){ for(j=0; j<sizeof matrix[0]/sizeof matrix[0][0];i++){ printf("%03d",matrix[i][j]); } printf("\n"); } printf("\n"); } 主要是我打电话: printMatrix(matrix); 矩阵定义为: int matrix[2][3] = {{1, 3, 4}, {2, 0, 1}}; 问题是我得到“未定义的参考’printMatrix’”你知道问题出在哪里吗? 它需要一些特殊的包括吗? 我不这么认为,但我不知道,错在哪里。

使用C 创建列表和结构数组

我目前正在开始使用C,所以我想我会尝试创建自己的自定义列表。 这是代码: #include struct list { char data[10]; struct list *n; }; void clist(struct list *a) { int j=(sizeof(a)/sizeof(a[0])); j–; for(int i=0; i<j-1; i++) { struct list *next=&a[i+1]; a[i].n=next; } } int main() { struct list first = {.data="one", .n=NULL}; struct list second = {.data="two", .n=NULL}; struct list third = {.data="three", .n=NULL}; struct list arr[] […]

如何将数组从.Net传递给C?

我试图利用一个用C语言编写的开源库,将其包装并将其暴露给.Net。 无论如何,我不是C专家。 到目前为止,我已经设法从F#调用用C语言编写的演示代码。 我设法通过遵循本指南然后填写空白来实现这一目标。 我已经调整了C代码以期望传递给它的int,所以我至少可以从F#中获取标量值到C.但是没有返回值。 但使用数组要复杂得多。 我的C代码是 extern “C” { __declspec(dllexport) void DisplayHelloFromDLL(int i) { //printf(“Hello from DLL !\n”); cout << "You gave me … an int: " << i <n = n; data->m = m; data->P = csc_matrix(data->n, data->n, P_nnz, P_x, P_i, P_p); data->q = q; data->A = csc_matrix(data->m, data->n, A_nnz, A_x, A_i, A_p); […]

为什么我不能定义大于300 * 300的二维数组?

可能重复: C中的最大数组大小 这是我的代码。 我从两个文本文件中读取两个字符串并存储它们。 然后我定义了两个二维数组,但问题是,大小非常有限。 例如,如果我将size定义为400,那么在编译时会遇到堆栈溢出。 #include #include #include #include #include #include #define BUFSIZE 2000 #define size 400 int main() { int a = 0, len1 = 0, len2 = 0; char string1[BUFSIZE]; char string2[BUFSIZE]; char *suc; FILE *fp1 = fopen(“input1.txt”, “r”); FILE *fp2 = fopen(“input2.txt”, “r”); if ((fp1 == 0)||(fp2 == 0)) { fprintf(stderr, […]

我如何实现位数组?

当前方向: 使用sizeof在我的系统上以1字节开头,并使用unsigned char。 范围是0-255。 如果length是我需要的位数,那么elements就是我在数组中需要的元素数(字节数)。 constant unsigned int elements = length/8 + (length % y > 0 ? 1 : 0); unsigned char bit_arr[elements]; 现在我添加基本function,如set,unset和test。 其中j是每字节位数的索引,i是字节索引,h =位索引。 我们有i = h / 8和j = i%8。 Psuedo代码: bit_arr[i] |= (1 << j); // Set bit_arr[i] &= ~(1 << j); // Unset if( bit_arr[i] & (1 << j) […]

MPI将动态2Darrays广播到其他处理器

我已经搜索了很多解释,但我想我无法弄清楚我是如何做到这种情况的。 我想做类似的事情:使用主处理器,我正在创建一个动态的2D数组。 然后我想; 1-将此arrays发送到其他处理器。 并且每个处理器打印该2Darrays2-将该arrays的一部分发送给其他人。 每个处理器将其部件打印到屏幕上。 例如; 我有2Darrays11 * 11和4个处理器。 等级0是主人。 其他人是奴隶。 对于第一种情况,我想将所有数组发送到排名1,排名2和排名3.而对于第二种情况,我想将行分享给从属。 11/3 = 3.因此,等级1需要3行,等级2需要3行,等级3需要5行。 这是我的代码: int processorID; int numberOfProcessors; int main(int argc, char* argv[]){ MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD ,&numberOfProcessors); MPI_Comm_rank(MPI_COMM_WORLD ,&processorID); double **array; if(MASTER){ array = (double**) malloc(11*sizeof(double *)); for(i=0; i<11; i++){ array[i] = (double *) malloc(11*sizeof(double)); } for(i=0; i<11; i++){ for(j=0; j<11; j++){ […]

将结构成员复制到数组

struct { char a[10]; char b[5]; char c[10]; } info; 如何将所有struct数据成员连接成一个单独的数组?

根据长度崩溃对静态数组中的字符串进行排序? |错误的分配/访问|

我想创建一个字符串数组,并根据它们的长度(最小 – >最大)按顺序对它们进行排序,但程序在所有输入后崩溃。 并且它绕过元素0(在输入期间直接从元素1开始) #include #include main() { int i,j,N; printf(“\nInput amount of alphanumericals: “); scanf(“%d”,&N); { int min; char *swap=(char*)malloc(sizeof(char)*150); char *A[N],**temp; for(i=0;i<N;i++) *(A+i)=malloc(sizeof(char)*N);//Error Here temp=A; for(i=0;i<N;i++){ printf("\nInput %d element:",i+1); fgets(temp+i,150,stdin);//And Here } printf("\n\nData ["); for(i=0;i<N;i++) printf(" %s",A[i]); printf(" ]\n\n"); //insertion sort for(i=0;i<N;i++){ min=i; for(j=i+1;j<N;j++){ if(strcmp(A[j],A[min])<0){ min=j; } } if(min!=i){ swap=A[i]; A[i]=A[min]; A[min]=swap; } […]

正确分配多维数组

这个问题的目的是提供一个关于如何在C中动态正确分配多维数组的参考。这是一个经常被误解的主题,即使在一些C编程书籍中也很难解释。 因此,即使是经验丰富的C程序员也很难做到正确。 我从编程教师/书籍/教程中了解到,动态分配多维数组的正确方法是使用指针指针。 然而,SO上的几个高代表用户现在告诉我这是错误的和不好的做法。 他们说指针指针不是数组,我实际上并没有分配数组,而且我的代码不必要地慢。 这就是我被教导分配多维数组的方法: #include #include #include int** arr_alloc (size_t x, size_t y) { int** pp = malloc(sizeof(*pp) * x); assert(pp != NULL); for(size_t i=0; i<x; i++) { pp[i] = malloc(sizeof(**pp) * y); assert(pp[i] != NULL); } return pp; } int** arr_fill (int** pp, size_t x, size_t y) { for(size_t i=0; i<x; i++) […]

我怎样才能在while循环之外访问数组

如何访问在while循环中填充的循环外的数组? MAIN.C #define _CRT_SECURE_NO_WARNINGS #include “Definition.h” #include #include #include extern int Readline(),CountWord(); char Line[500]; /* one line from the file */ char myFileList[300][MaxLine]; char myFileList2[300][MaxLine]; char myFileList3[300][MaxLine]; char myFileList4[300][MaxLine]; int NChars = 0, /* number of characters seen so far */ NWords = 0, /* number of words seen so far */ NLines = 0, […]