Tag: 数组

如何在C中通过udp socket发送整数数组?

我必须通过udp套接字发送一个int数组。 我是否必须将其转换为字符数组或字节序列? 什么是标准解决方案?

为什么我在C中的多维动态分配不起作用?

我一直试图弄清楚我在C中分配和使用多维动态分配数组的问题。我真的很感激任何帮助。 我尝试了两种方法。 首先: cdr = (double ***) malloc(NUM_REGIONS * sizeof(double **)); for(i=0; i<NUM_REGIONS; i++){ cdr[i] = (double **) malloc(numRatings * sizeof(double *)); for(j=0; j<numRatings; j++){ cdr[i][j] = (double *) malloc(remQuarters * sizeof(double)); } } 第二个: tempPtr1 = (double *) malloc(NUM_REGIONS * numRatings * remQuarters * sizeof(double) ); tempPtr2 = (double **) malloc (NUM_REGIONS * numRatings […]

2D char数组和char **(OR,3D char数组和char ***等)之间的区别

首先,我已经审查了这些: 多维数组如何在内存中格式化? C中二维数组的内存映射 从那里,已知2D数组与 char **不同,但在内存中它们看起来完全相同 。 这听起来很奇怪,所以我研究了以下内容: #include char func(char** m) { return m[0][0]; //only works for char**, already discussed in the other SO question } int main() { //char a[4][2]; //a 2D char array int row = 4, col = 2; //char** char** a = malloc(row * sizeof(char*)); int i; for (i = […]

如何使用C中的函数生成随机数组

我试图将程序从Matlab移植到C,以便改善执行时间和内存使用。 由于C中没有生成0和1统一填充数组的函数(或者我找不到它们),因此我创建了一个函数来相应地填充相关概率的数组。 示例 :如果概率为0.3(30%),我希望有一个包含100个元素的数组,随机填充零和1 ,并且数组的总和必须接近30。 而不是100我使用N =试验数,所以如果N = 10000那么数组之和应该接近3000,等等。 Matlab中的function只是: function [y] = rand_gen(N,Prob) for i=1:N y(i,1) = binornd(1,Prob); end end 该函数将被称为: array = rand_gen(N, Probability); 现在,这是C中的问题:当我运行程序时,我可以生成一些数组,但最大试验次数(N)非常低,我不认为它是内存问题。 如果我运行N = 100000的程序一切正常,但在100000(和其他东西)崩溃后。 C中的程序是: #include #include #include int * rand_gen(int N, double Prob); // Function declaration int sum_array(int a[], int num_elements); // Function declaration int main() // Main […]

使用fscanf填充一个char数组会更改另一个char数组的值

我首先使用fscanf填充我的第一个数组,然后再使用同一输入文件中的fscanf来填充另一个数组。 然而,这似乎正在改变我的第一个数组中的值。 这是我的意见: 4 abcd efgh ijkl mnop qrst uvwx yz12 3456 这是我的代码: #include void prints( int n, char sqr[n][n]){ for (int i = 0; i < n; i++){ for (int j = 0; j < n; j++){ printf("%c", sqr[i][j]); } printf("\n"); } } int main(void){ FILE *in = fopen("transform.in", "r"); FILE *out = fopen("transform.out", […]

如何在C中声明一个常量2d字符串数组

我有以下数组结构: left , right , top top , left , right top , top , left 我想在C中声明它,我这样做了: char *movements[][] = {{“left”,”right”,”top”}, {“top”,”left”,”right”}, {“top”,”top”,”top”} } 但我收到此error : array has incomplete element type. 实现这一目标的正确方法是什么(声明和访问(打印))。我是否需要采用三维数组?

如何在C中清除此数组指针?

我正在尝试使用系统调用进行基本的bash,但是我对指针数组有一些小问题。 为了恢复我的代码,我从stdin中读取带有read()的命令到缓冲区然后我使用strsep()将命令与参数和所有参数分离到一个数组中。 然后我用fork()创建一个新进程,并使用execvp()的相关参数执行该命令。 所有这一切都进入无限循环,直到用户键入“退出”(尚未编码)。 问题是在第一次迭代之后,我需要* pArgs为空,用于下一个命令和参数。 我不知道怎么做…… 这是我的代码: #include #include #include #include int main(int argc, char **argv) { char bBuffer[BUFSIZ], *pArgs[10], *aPtr = NULL, *sPtr; int aCount; pid_t pid; while(1) { write(1, “\e[1;31mmyBash \e[1;32m# \e[0m”, 27); read(0, bBuffer, BUFSIZ); sPtr = bBuffer; aCount = 0; do { aPtr = strsep(&sPtr, ” “); pArgs[aCount++] = aPtr; […]

我可以使用指针打印出int数组的数组,就像字符串数组一样吗?

如果我想打印出如下字符串数组: char juices_A[][12] = { “dragonfruit”, “waterberry”, “sharonfruit”, }; 我可以简单地分别使用juices_A[0] , juices_A[1] , juices_A[3]作为指向字符串”dragonfruit” , “waterberry” , “sharonfruit”的指针,然后打印出来。 但是,如果我想打印出int数组的数组,如果: int data[3][3] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }; 我不能简单地使用data[0] , data[1] , data[2]作为指向{ 1, 2, 3 } , { 4, 5, 6 } , […]

Swig和多维数组

我正在使用Swig将Cthon与C代码连接起来。 我想调用一个C函数,它接受一个包含int ** var的struct的参数: typedef struct { (…) int** my2Darray; } myStruct; void myCFunction( myStruct struct ); 我正在努力研究多维数组。 我的代码如下所示: 在接口文件中,我使用carray像这样: %include carrays.i %array_class( int, intArray ); %array_class( intArray, intArrayArray ); 在python中,我有: myStruct = myModule.myStruct() var = myModule.intArrayArray(28) for j in range(28): var1 = myModule.intArray(28) for i in range(28): var1[i] = (…) filling var1 (…) var[j] […]

如何将char数组case 和连接到C中的char指针?

我想连接两个字符’7’和’9’来形成这个字符串“79”。 首先,我初始化了变量。 (限制:我只能使用字符类型,我不能再使用另一个字符变量。) char *charac = (char *) malloc(sizeof(char) * 200); char *combined = (char *) malloc(sizeof(char) * 200); 然后我给出了charac [0]和charac [1]的值。 charac[0] = ‘7’; charac[1] = ‘9’; printf(“charac[0] : %c\n”, charac[0] ); printf(“charac[1] : %c\n”, charac[1] ); 我想连接charac [0]和charac [1] strcpy(combined, (char*)charac[0]); strcat(combined, (char*)charac[1]); printf(“combined : %s\n”, combined); free(combined); 但上面的代码不起作用。 我收到错误消息:“警告:从不同大小的整数转换为指针”。 阅读完所有意见和建议后,我获得了我想要的输出结果。 这是最终的代码: char […]