Tag: 数组

如何在C中初始化3D连续数组

我知道如何以下列方式执行一个不可能的非连续数组: int main () { int ***array = (int***)malloc(3*sizeof(int**)); int i, j; for (i = 0; i < 3; i++) { // Assign to array[i], not *array[i] (that would dereference an uninitialized pointer) array[i] = (int**)malloc(3*sizeof(int*)); for (j = 0; j < 3; j++) { array[i][j] = (int*)malloc(3*sizeof(int)); } } array[1][2][1] = 10; return 0; […]

错误1错误C2148:数组的总大小不得超过0x7fffffff字节我在C中得到此Erorr

我想制作一个char[1 048 576][16 384][1024]和一个int [1 048 576][16 384]但我得到一个错误! 我想制作一个像excel一样大的3d数组! 谢谢你的帮助!。

在链接列表的末尾插入节点而不是值

假设我已经有一些链接列表已经可用,我想将每个列表的第一个节点存储到另一个列表中,以便我可以回想一下这个列表来显示原始列表。 我认为我们必须使用两种不同的结构。 我已经成功保留原始列表并使用单个列表的第一个节点的数组显示它们但我想创建一个单独列表的链接列表来实现它。 它有预期的输出,但正如我所说,我想使用链表而不是节点数组。 现在这就是我试图解决问题的方法,将链接列表数组替换为第一个节点的链表,每当我尝试调试代码时,我都会崩溃。 请帮我。 #include #include struct node{ int number; struct node*next; }; typedef struct node Node; Node* insertValue(Node * list, int value); void display(Node*); struct list_of_nodes { Node *list; struct list_of_nodes *next; }; typedef struct list_of_nodes ListNode; ListNode* insertNode(ListNode* head,Node* node); int main() { ListNode *head=NULL; Node *globalList = NULL, *lists[100]; int […]

在2Darrays/矩阵中找到由1组成的正方形

谢谢你的帮助。 对此,我真的非常感激。 我一直在寻找SO的解决方案,但没有什么是我需要的。 我需要它在C. 我的任务是在数组中找到1的“最大正方形”。 该数组仅包含0和1,并且看起来像这样: 4 4 0 1 1 1 0 1 0 1 0 1 1 1 1 0 1 0 输出应该打印“左上角”1的[row][col]和“右下角”的[row][col] ,所以它应该是,例如, [0][1]和[2][3] 。 我正在使用我的getcolor()函数来获取[row][col] spot的值。 此外,我有这些function,以获得最长的水平和垂直线。 出于某种原因,它们仅适用于具有相同列数和行数的数组。 例如,当我使用一个包含4列和5行的数组时,它无法正常工作。 你能帮帮我吗? void getHline(Bitmap *arr) { int i, j, k; int line, line_start, line_end, line_max = 0; // Horizontally for (k = 0; […]

计算文本文件中单词的重复次数

扩展我之前的练习,我有一个文本文件,每行填充一个单词。 hello hi hello bonjour bonjour hello 当我从文件中读取这些单词时,我想将它们与一个struct指针数组(从文本文件创建)进行比较。 如果数组中不存在该单词,则应将该单词存储到计数为1的结构指针中。如果该单词已存在于数组中,则计数应增加1.我将结果写入新文件(那已经存在了)。 hello = 3 hi = 1 bonjour = 2 这是我的代码 #include #include struct wordfreq{ int count; char *word; }; int main(int argc, char * argv[]) { struct wordfreq *words[1000] = {NULL}; int i, j, f = 0; for(i=0; i <1000; i++) words[i] = (struct wordfreq*)malloc(sizeof(struct wordfreq)); […]

如何查找数组中元素数为零的元素数

我已经声明了一个包含30个元素的数组: – unsigned char some_array[30]; 我在数组中存储了一些元素,例如: – {0xFB, 0x07, 0x0B, 0x02, 0x00, 0x0C, 0x03, 0x08, 0x0F, 0x0F, 0x07, 0x0A, 0x09, 0x06, 0x0D} 我需要找到这个数组中的元素数量。 sizeof (some_array) / sizeof (some_array[0]); yield 30,这是数组可以存储的元素总数。 strlen(some_array); yield 4,这是数组中0x00元素的索引。 我怎样才能确定数组中存储的元素数量?

带线程的C / C ++数组 – 我需要使用互斥锁还是锁?

我是使用线程的新手,并且已经阅读了很多关于如何共享数据和保护数据的信息。 但是我还没有真正掌握何时需要使用互斥锁和锁来保护数据。 以下是我将要解决的问题的描述。 需要注意的重要一点是它对时间至关重要,因此我需要尽可能减少开销。 我有两个固定大小的双arrays。 第一个数组将为后续计算提供数据。 线程将从中读取值,但永远不会被修改。 任何线程都可以在某个时间读取元素。 第二个数组将用于存储计算结果 由线程执行。 此数组的元素只能由一个线程更新,并且可能只在结果值时更新一次 是写的。 我的问题呢? 每次从只读数组访问数据时,是否真的需要在线程中使用互斥锁? 如果是这样你能解释原因吗? 在写入结果数组时,是否需要在线程中使用互斥锁,即使这将是唯一写入此元素的线程? 我应该使用primefaces数据类型吗?如果我这样做会有任何重要的时间吗? 这类问题的答案似乎很多 – 不,如果您的变量是对齐的,则不需要互斥锁。 我的数组元素在这个示例中是否会对齐,或者是否有某种方法可以确保它们是? 代码将在64位linux上实现。 我打算使用Boost库进行multithreading处理。 感谢所有的回复和评论,我一直在仔细研究这个问题并在网上看了好几天,并且一旦发布了答案,并且在几秒钟之内就会有明确的解释。 有一个“已接受的答案”,但所有答案和评论都同样有用。 再次感谢

BubbleSorting C语言

我们正在学习数组,我只是围绕着泡泡排序。 我编写了以下代码来按升序对数组进行排序,但是存在问题。 我找不到它,但我知道有问题。 我找到了正确的代码,但我仍然不明白为什么这不起作用。 我的代码 int a; int i; int temp; int value[5] = { 5, 4, 3, 2, 1 }; for (i = 0; i value[i + 1]) { temp = value[i]; value[i] = value[i + 1]; value[i + 1] = temp; } } for (a = 0; a < 5; a++) { printf(" […]

用C读取文件并拆分字符串

我有一个程序在C中读取文件。现在我想把字符串除以空格分成一个数组。 我该怎么做? #include int main() { char line[30]; char names[100][20]; int sizes[100]; int i = 0; FILE *fp; fp = fopen(“in.txt”, “rt”); if(fp == NULL) { printf(“cannot open file\n”); return 0; } while(fgets(line, sizeof(line), fp) != NULL) { printf(line); i++; } fclose(fp); return 0; }

什么时候指针减法在C中未定义?

char *buf = malloc(bufsize) char *ptr = buf; … while(condition) { ptrdiff_t offset = ptr – buf; // bufsize) { // we need more room bufsize += 128; buf = realloc(buf, bufsize); ptr = buf + offset; // buf might be in a completely new location } *ptr++ = … // write this byte } […]