Tag: 数组

2d动态数组(在C中),每行具有特定的行号和不同的列大小

如何在每行中创建具有特定行号和不同列大小的2d动态数组(在C中)? 例如:这是一个数组(3 =行) |1 | 4 | 5 | |3 | |6 | 2 | 第1行 – 3列 第2行 – 1列 第3行 – 2列 我希望我的程序在运行时向用户询问每一行以给出cols的数量。 我如何制作这样的数组?

在C中动态增加数组大小

我需要根据用户输入增加2个数组的长度。 我正在使用下面的代码。 但输出与用户输入不匹配。 #include int main() { int i=0, key=0, size[key], time[key]; while (key!=-1) { printf(“Insert value for size : “); scanf(“%d”,&size[i]); printf(“Insert value for time : “); scanf(“%d”,&time[i]); i++; printf(“Run again Press-1 or Exit : “); scanf(“%d”,&key); } int x=0; for (x ; x<i ; x++) { printf("%d %d\n",size[x],time[x]); } return 0; } 当用户输入值时: […]

如何在C中动态分配2D数组?

所以我有一个带结构的程序 typedef struct s_struct { int rows; int cols; char* two_d; //This is supposed to be the 2D array } *GRID; 我想创建一个敲击并动态分配内存,然后填充2D数组,但我不知道如何。 这是我对create(int prows,int pcols)函数的作用: GRID grid = malloc(sizeof(struct s_struct)); grid ->rows = prows; grid ->cols = pcols; grid ->two_d = malloc(sizeof(char) * (rows*cols)); 我不明白这是如何创建一个2D数组,如果它甚至如此,以及如何填充数组。

文件/程序范围内的2D数组

我需要一个可以从不同方法访问的数组,我必须在main()中分配这个数组,然后让其他函数如foo()访问这个数组。 这个问题帮助我分配了数组: 用malloc定义一个2D数组并修改它 我正在定义这样的数组: char(*array)[100] = malloc((sizeof *array) * 25200); 我在main()中这样做 我可以在这个数组中存储25200个字符串,通过array[1]访问它们 现在可以从不同的方法访问此数组,我该怎么做?

在另一个.c文件中使用函数内部的函数?

我试图从另一个函数更改数组的大小。 代码编译但程序崩溃了…我卡住了,非常困难。 新的,我的头向左旋转aaaaah …….. array.c struct array { int* data; int size; }; struct array* array_create() { struct array* array = (struct array*) malloc(sizeof(struct array)); array->data = (int*) malloc(sizeof(int) * 10000); array->size = 10000; return array; } void array_resize(struct array* array, int size) { if (size > array->size) { free(array); array->data = (int*) malloc(sizeof(int) * […]

将2D数组传递给C语言的方法

我一周前开始学习C语言。 只是为了测试我决定写一个tictactoe游戏。 我有一个领域。 int field[3][3]; 还有一个函数printField void printField(int field[3][3]){ for(int i = 0; i < 3; i++){ for(int j = 0; j < 3; j++){ printf("%i", field[i][j]); } printf("\n"); }} 它在这样的主要工作: int main(){ printField(field);} 但如果我改变了 void printField(int field){…} 要么 void printField(int field[][]){…} 它给了我一堆错误: subscripted value is neither array nor pointer nor vector passing argument 1 […]

比较字符串与通配符

在C中,我怎样才能将包含* (可以是任何字符组合)的字符串与字符串的二维矩阵进行比较? 例如,我有一个单词go*s 。 它可以生成单词“华丽”( *是“orgeou”),“善良”,“山羊”,“去”等。我应该从整个字典中读取单词并将它们与包含一个或一个单词的单词进行比较更多星号( * )。 必须打印每个可以用带星号的单词生成的单词。 如果两个单词的长度相同,那么很容易比较,因为*只能是一个字母。 int fq(char *s1, char *s2){ int i, a=0, b=0, s=0; while (1){ if (s1[a]==’\0′) break; a++; } if (strlen(s1)==strlen(s2)){ for(i=0; i<a; i++){ if (s1[i]=='*'){ b++; } if (s1[i]==s2[i]){ b++; } } } if (b==a) return 1;

取消引用指向整个数组的指针

我正在学习用C指向(整个)数组的指针。 假设我声明了一个2d的整数矩阵: int arr[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; 现在,我声明一个适当类型的指针: int (*ptr)[3][3]; 初始化它: ptr = &arr; 现在,ptr包含arr的地址。 ptr —>&(arr[0][0] arr[0][1] arr[0][2] arr[1][0] arr[1][1] arr[1][2] arr[2][0] arr[2][1] arr[2][2]) 那么,当我们取消引用ptr时,它应该产生第一个位置,不是吗? printf(“%d”, *ptr)在编译时出错。 要打印第一个元素,我要使用***ptr 。 我有两个问题: 我无法理解三重解除引用的必要性。 如果*ptr没有指向数组的第一个元素,它指向什么?

排序2个大型数组

我还没有采用数据结构和算法类,我在尝试做的事情上遇到了一些麻烦。 我有2个大数组,1个是大约80k-100k字的char ,第二个是具有相同整数量的int数组(例如,用words[502]写的words[502]其出现的数量用integers[502]写成integers[502] )。 我必须对它们进行排序,以便它的相应单词的最大整数是第一个,第二个第二个等等,是否可以不使用冒泡排序(这对于这些数字来说太慢)? void bubble_sort(int n) { int i,j,temp; char tempwordy[40]={0}; for(i=1;i< n;i++) { for(j=0;jcounters[j+1]) { temp=counters[j]; counters[j]=counters[j+1]; counters[j+1]=temp; strcpy(tempwordy,words[j]); strcpy(words[j],words[j+1]); strcpy(words[j+1],tempwordy); } } } }

C读取字符串并动态接受括号

我要读一串括号来分析它。 如何读取要插入动态生成的数组中的字符串? 除了使用scanf的括号外,如何避免读取所有字符? [] {}() 谢谢。 编辑:我必须从键盘读取一系列括号,但我不知道长度。 所以我要创建一个动态生成的数组(这是一个要求),只包含括号的空格。 当我正在阅读时,我想只接受括号并避免使用所有其他字符,这是否可以与正则表达式的scanf一起使用?