Tag: 数组

如何在C中连接两个数组?

如何连接两个数组以获得包含两个原始数组元素的单个数组?

使用数字作为大小创建整数的char数组

我试图在C中创建一个char数组,用int的数字填充它,但int可以是任意数量的数字。 我正在使用一个名为getDigits(int num)的创建函数,它返回int所具有的位数。 char buffer[getDigits(number)] = “”; snprintf(buffer, sizeof(buffer),”%d”,number); 但是当我使用gcc编译时,它返回: error: variable-sized object may not be initialized 我已经尝试了一切。 当我将其声明为char fileSizeStr[5] = “”; , 有用。 当我尝试动态声明缓冲区大小时,我可以看到问题正在上升,但我真的想知道是否是实现此目的的一种方法。

是否 和(* a)等效为函数参数?

function原型 void foo(int n, int a[][]); 给出了关于不完整类型的错误 void foo(int n, int (*a)[]); 编译。 根据衰减规则int a[][]在这种情况下等效于int (*a)[] ,因此int (*a)[]也应该给出关于不完整类型的错误,但GCC似乎接受它。 有什么我想念的吗? 这可能是一个GCC错误,但我没有发现任何与之相关的内容。

2D数组索引 – 未定义的行为?

我最近遇到了一些代码,做了一些有问题的2D数组索引操作。 以下面的代码示例为例: int a[5][5]; a[0][20] = 3; a[-2][15] = 4; a[5][-3] = 5; 上面的索引操作是否受到未定义的行为的影响?

将每行文件读入数组

我正在读取一个文件,并希望将每一行放入一个数组中的字符串中。 文件的长度是任意的,每行的长度是任意的(虽然假设它将少于100个字符)。 这是我得到的,而不是编译。 基本上这是一个字符数组的数组,对吧? 所以不应该是char** words = (**char)malloc(sizeof(*char)); ? #include #include int main(){ int BUFSIZE = 32767;//max number of lines to read char** words = (**char)malloc(sizeof(*char));//gives error: expected expression before ‘char’ FILE *fp = fopen(“coll.txt”, “r”); if (fp == 0){ fprintf(stderr, “Error opening file”); exit(1); } int i = 0; words[i] = malloc(BUFSIZE); while(fscanf(fp, “%100s”, […]

如何在C中逐行读取文件?

我有一个文本文件,最多100个IP地址,每行1个。 我需要将每个地址作为字符串读入名为“list”的数组中。 首先,我假设“list”需要是一个二维char数组。 每个IP地址长度为11个字符,如果包含“\ 0”,则为12个,因此我声明列表如下: char list[100][12]; 接下来,我尝试使用fgets来读取流: for (i = 0; i < 100; i++) { if (feof(stream)) break; for (j = 0; j < 12; j++) fgets(&list[i][j], 12, stream); count++; } 要检查字符串是否已正确读取,我尝试输出它们: for (i = 0; i < 5; i++) { for (j = 0; j < 11; j++) printf("%c", list[i][j]); printf("\n"); } […]

函数定义中的指针与数组:void fct1(int * p)和void fct1(int p )之间有什么区别?

我想知道它们之间有什么区别 void fct1(int *p) 和 void fct1(int p[]) 我知道这两个都是指针,但有任何差异

函数与C中的返回类型数组

我在C中有以下function: int[] function(int a){ int * var = (int*)malloc(sizeof(int)*tags); …. } *var是指向数组var的指针吗? 如果是,我如何在函数中返回数组( var )?

在2D数组上使用realloc c

如果我的问题有些模糊,我对C有点不好意思。 我需要在2D数组上使用realloc而不会丢失它以前的数据,我在我的程序中有这个function: void modifyMatrix(int **iMat, int iRow, int iRow2, int iCol) { int i; iMat = (int**)realloc(iMat, (iRow2)*sizeof(int*)); for(i=iRow; i<iRow2; i++) { iMat[i]=NULL; } for(i=0; i<iRow2; i++) { iMat[i]=(int*)realloc(iMat[i], (iCol)*sizeof(int)); } } iRow是原始尺寸,iRow 2和iCol是新尺寸,并且都在程序的其他地方捕获。 每当我尝试打印矩阵时,我一直在添加的行和列上获取垃圾数据或内存值,我做错了什么? 如果您需要完整的代码或任何其他问题需要澄清,请提前告知我们! 编辑:下面你可以看到我用来创建Matrix的代码 我的坏,我想我应该补充说矩阵已经在程序的其他地方创建了,这个function我只是想修改尺寸,感谢快速响应btw!,下面你可以找到与之相关的function我正在创建数组 void createMatrix(int ***iMat, int iRow, int iCol) { int **iRow2 = (int**)calloc(iRow, sizeof(int*)); int i; for (i=0; […]

如何在C中正确地malloc for struct数组

我将使用strtok读取两组char* (或字符串),并且由于这两组chars是相关的, (address : command\n)我决定使用一个结构。 struct line* array = (struct line*)malloc(sizeof(file) * sizeof(struct line*)); 这个函数的行malloc空间给了我一个分段错误,并想知道你是否可以告诉我一个正确的malloc空间方式。 对于上下文,这是我的其余代码: struct line { char* addr; char* inst; }; while loop{ x = strtok(line,”: “); y = strtok(NULL,”\n”); strcpy(array[i].addr,x); //assume that x and y are always 3characters strcpy(array[i].inst,++y); i++; }