Tag: 数组

使用realloc来连接字符串

我试图连接两个字符串,假设“dest”字符串没有足够的空间来添加另一个字符串,所以我使用动态数组来解决它。 尝试编译代码时出现问题是mremap_chunk错误。 我不知道我错过了什么,因为realloc调用有所有正确的参数。 错误: malloc.c:2869: mremap_chunk: Assertion `((size + offset) & (GLRO (dl_pagesize) – 1)) == 0′ failed. Aborted (core dumped) #include #include #include char *strcatt(char *s1, char *s2) { int a = strlen(s1); int b = strlen(s2); int i, size_ab = a+b; s1 = (char *) realloc (s1, size_ab*sizeof(char)); for(i=0; i<b; i++) { s1[i+a]=s2[i]; […]

赋值使得指针来自int w / out of cast

我正在为一个记忆斐波那契数字的程序编译一些代码。 该程序工作正常但是当我在linux环境中编译时,我在编译之前得到了这个警告。 line 61: warning: assignment makes pointer from integer without a cast [enabled by default] 以下是此警告来自的代码片段,我将尝试展示最相关的内容,以便了解最佳情况 int InitializeFunction(intStruct *p, int n) p->digits = (int)malloc(sizeof(int) * 1); if(p->digits == NULL) handleError(“Got error”); //making the one index in p->digits equal to n p->digits[0] = n; //incrementing a field of ‘p’ p->length++; //return 1 if successful return […]

如何使用指针在另一个函数内部分配一个数组

我是第二年的计算机工程师,还在学习C语言的过程。 我想通过使用函数而不是在main内部分配动态地分配数组。 这是我在main中分配数组时的代码。 #include #include #include #include #define ESC_KEY 27 #define NUM_1_KEY 49 #define NUM_2_KEY 50 void find_two_largest(int a[], int n, int *largest, int *second_largest); void arrayInit(int *,int *, int, int); void randGenArray(int [], int); void inputArray(int[], int); void result(int, int); void loading(void); int menu(void); int main(void) { system(“color f5”); int n,i,largest,largest_2, *a; arrayInit(a,&n, 2, […]

C迭代结构数组

说我已经声明了一个结构 struct mystruct { char a[10]; double b; } struct mystruct array[20] = { {‘test1’,1.0}, {‘test2’,2.0} <—- I just want to declare 2 items first because I am going to add new ones later. }; int i; for( i=0; array[i].a != NULL ;i++){ …. <— so here I just want to display what is initialized […]

将两个2Darrays相乘

所以我有一个问题将两个2darrays相乘。 我非常确定矩阵A和矩阵B正确存储,它们在程序运行时正确显示。 当我尝试将2个数组相乘时,我得到了很多1和0的长字符串。 什么可能是问题的任何想法? 这是我的代码: #include #include #include #include /* Routines called. */ int loadMatrixFromFile(char *filename, int *data); void showMatrix(int *data, int len); int makeIdent(int matrixB[5][5], int length); int matrixA[5][5]; int matrixB[5][5]; int matrixC[5][5]; void multiplyMatrices(int matrixA[5][5], int matrixB[5][5],int matrixC[5][5]); int main(){ int len, data[1000]; len = loadMatrixFromFile(“Numbers.txt”, data); showMatrix(data, len); makeIdent(matrixB,len); multiplyMatrices(matrixA, matrixB, matrixC); […]

在struct中访问数组元素时出错

我正在尝试编写一个“ArrayList”程序(类似于Java ArrayList ),它将使用realloc自动扩展,这样程序员就不必担心数组中的存储空间。 这是我的代码: #include #include #include #include #define ARR_DEFAULT_SIZE 20 #define INCR 10 #define ARRTYPE char // Files using this #undef this macro and provide their own type typedef struct { ARRTYPE *arr; long size; long nextincr; } arrlst; arrlst *nlst(void); void add(arrlst *, ARRTYPE); ARRTYPE elmat(arrlst *, long); int main(int argc, char **argv) […]

printf命令导致seg错误?

当我尝试初始化一个大的双维字符数组时,它工作得非常好。 但是当我添加一个简单的打印命令时,它会给我一个分段错误。 有关为什么会发生这种情况的任何想法? #include int main(void) { printf(“!”); char f[10000][10000]; } 没有printf命令,或者即使printf命令没有打印任何内容(即“”),它也能正常工作。 如果我让它打印任何东西它会给出错误。 有帮助吗?

数组如何在结构中工作?

如果我有例如 typedef struct node { int numbers[5]; } node; 每当我创建这样一个结构的实例时,就会在堆栈中为数组本身分配内存(在我们的例子中为5个整数的20个字节(考虑整数为32位)),数字将成为指向该缓冲区的第一个字节。 所以,我认为,因为在节点的实例内部,将有一个20字节的缓冲区(对于5个int )和一个4字节的指针( numbers ), sizeof(node)应该是24个字节。 但是当我实际打印出来的时候说是20个字节。 为什么会这样? 为什么不考虑指向数组的指针? 我将非常感谢任何回应。

需要帮助来理解c中的指针和数组的代码

我需要了解注释行的作用吗? #include void fun(char**); int main() { char *argv[] = {“ab”, “cd”, “ef”, “gh”}; fun(argv); return 0; } void fun(char **p) { char *t; t = (p+= sizeof(int))[-1]; //what this line does? //[-1] does what? printf(“%s\n”, t); }

分段创建arrays时使用OpenMP时出错

在访问for循环内的数组时,我遇到了分段错误。 我想要做的是生成DNA串的所有子序列。 当我在for中创建数组时发生了这种情况。 阅读一段时间后,我发现openmp限制了堆栈大小,因此使用堆更安全。 所以我更改代码以使用malloc,但问题仍然存在。 这是完整的代码: #include #include #include #include #include #define DNA_SIZE 26 #define DNA “AGTC” static char** powerset(int argc, char* argv) { unsigned int i, j, bits, i_max = 1U <= sizeof(i) * CHAR_BIT) { fprintf(stderr, “Error: set too large\n”); exit(1); } omp_set_num_threads(2); char** subsequences = malloc(i_max*sizeof(char*)); #pragma omp parallel for shared(subsequences, argv) […]