Tag: 数组

在C中遍历内核空间中的祖先的结束标志

我试图遍历进程的所有祖先,将其信息存储在用户传递的静态数组中,并且我使用NULL指针结束标志来结束遍历。 但是,这似乎不起作用,并且将继续循环,直到用户空间传递的大小编号(数组的容量)在所有情况下都匹配num_filed数字(数组中的元素数量),即使我有运行的进程数量很少。 那么,什么似乎是穿越祖先的结束标志? 这是我的遍历循环代码: current_process = current; int i = 0; while (current_process != NULL && current_num_filled parent; }

从C中的数组中随机选取字符串

void pick() { char* words[2]; words[0] = “blah”; words[1] = “hmm”; char random; srand(time(NULL)); random = words[rand() % 2]; printf(random); return; } 这是我的代码,我想从单词数组中随机选择一个单词,但是当我运行它时,编译器说:[警告]赋值从指针生成整数而没有强制转换[默认启用]

将返回的指针分配给数组

我有一个函数返回float *,它实际上作为返回函数中的数组填充,这样 float* some_fnc() { float *x=malloc(sizeof(float)*4); x[0]=…… } … // in main float y[4]; y=some_fnc(); 但是我收到“不兼容的类型”错误,这是正常的吗? 有没有办法克服这个w / o声明y为浮动*?

指向字符串

以下两个代码片段编译时没有任何错误/警告但在运行时崩溃。 请赐教。 计划1 int main( ) { char *p= “Hello” ; *p = ‘B’ ; printf(“\n%s”,p); return 0; } 计划2 int main( ) { char *p= “Hello” ; Char *q=”mug” *q = *p ; printf(“\n%s”,q); return 0; } 对于程序2,我预计输出为’Hug’。

可能简单但令人困惑的分配错误

#include int main() { char gradesList[5]; gradesList[2] = “X”; printf(“%c”, gradesList[2]); } 当我尝试运行此代码时,我收到以下错误: 指向整数转换的指针不兼容 赋值从指针生成整数而不进行强制转换

使用fscanf()扫描到C中的数组的问题

我有一个我正在扫描的文本文件。文件中的第一个数字是矩阵中的行数,第二个数字是矩阵中的列数。 “文本文件” 4 10 3.000000,1.000000,1180.000000,1955.000000,221900.000000 3.000000,2.250000,2570.000000,1951.000000,538000.000000 2.000000,1.000000,770.000000,1933.000000,180000.000000 . . . n(4,10)矩阵 我正在使用fscanf存储读取数组和两个循环来读取二维数组中接收的值。 double hold; fscanf(fpointer,”%d”,&value);//gets me 4 fscanf(fpointer,”%d”,&lastvalue);/*gets me 10*/ for (i=0; i<value; i++) { for (j=0; j<lastvalue; j++) //Supposed to input the other values { fscanf(fpointer,"%lf",&hold); array[i][j]=hold; 我通过两个for循环打印数组内容。 for(i=0;i<value;i++){ for(j=0;j<lastvalue;j++){ printf("%lf\t", array[i][j]); } printf("\n"); 然而,我收到循环的第一个索引作为输出重复。 3.000000 3.000000 3.000000 3.000000 3.000000 3.000000 3.000000 3.000000 3.000000 […]

如何将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); } 它不起作用。

这是C中的Flexible Array Struct成员吗?

可能重复: C中的灵活arrays成员 – 糟糕吗? 我阅读了以下代码: struct hello { int number; int data[1]; }; 我知道Flexible数组成员允许我们可以将最后一个元素声明array of unspecified size的array of unspecified size如下所示: struct hello { int number; int data[]; }; 在这个struct ,最后一个元素没有指定大小,那么这两个元素之间的区别是什么? 第一个声明是什么意思?

导致C崩溃的数组大小

我正在努力在C中创建大量的结构。我需要数组来容纳超过100万个结构实例。 但是当arrays大小超过几十万时,程序崩溃了。 它运行良好的第一位然后它崩溃。 我正在运行带有6 GB RAM的Windows 7。 这个问题的根本原因是什么? 以下是代码 struct Job { unsigned long id; unsigned int num_preds; unsigned int resources; unsigned int* pred_array; }; int main() { //Counter and loop variables (Do not use for any other purpose) unsigned int i,j,k,count; unsigned long height,num_jobs; // This is our input section height = 1000; //Calculate […]

在C中,如何对每个指针指向int的可变长度数组的指针数组进行排序?

我的问题是如何通过所有其他数组中的第一个数字对arr6进行排序。 我的意思是,如果arr1在第一个num有3个,那意味着它需要在arr6为3。 最后, arr6需要首先指向arr4 , arr4 , arr2 , arr1 , arr5 。 #include #include void sort_arr(int **arr6); void print_arr(int **arr6); void order_arr(int **arr6); int main(void) { int i = 1; int arr1[] = { 3, 9, 6, 7 }; int arr2[] = { 2, 5, 5 }; int arr3[] = { 0 }; int […]