在C中对gotoxy的未定义引用

我正在尝试用C语言编写程序(Windows中的代码::块)。 我添加了下面的头文件,它编译时没有错误,但是当它运行代码时,它会抛出一个错误未定义的引用gotoxy。 找到完整的代码。 我遇到gotoxy语句时会出现错误。 # include # include # include # include # include #include struct node { int data; struct node *link; }; void append(struct node **,int); void in_begin(struct node **,int); void del(struct node **,int); void in_middle(struct node **,int,int); int count(struct node *); void display(struct node *); char ans; int main() { struct node […]

为什么我在C中使用atoi()得到这个意想不到的结果?

我不明白以下C代码的结果。 main() { char s[] = “AAA”; advanceString(s); } void advanceString(p[3]) { int val = atoi(p); printf(“The atoi val is %d\n”,val); } 这里的atoi值显示为0,但我无法弄清楚确切的原因。 根据我的理解,它应该是数组中每个值的十进制等值的总和? 如果我错了,请纠正我。

C struct hack at work

这是如何使用C struct hack时分配的“额外”内存? 问题: 我在下面有一个C struct hack实现。 我的问题是如何使用我分配给hack的“额外”内存。 有人可以给我一个使用额外内存的例子吗? #include #include int main() { struct mystruct { int len; char chararray[1]; }; struct mystruct *ptr = malloc(sizeof(struct mystruct) + 10 – 1); ptr->len=10; ptr->chararray[0] = ‘a’; ptr->chararray[1] = ‘b’; ptr->chararray[2] = ‘c’; ptr->chararray[3] = ‘d’; ptr->chararray[4] = ‘e’; ptr->chararray[5] = ‘f’; ptr->chararray[6] = ‘g’; ptr->chararray[7] […]

使用C中的scanf解析输入

我一直在试图找出如何使用scanf()遇到很多问题。 它似乎与整数一起使用,相当直接的scanf(“%d”, &i) 。 我scanf()问题是在循环中使用scanf()尝试读取输入。 例如: do { printf(“counter: %d: “, counter); scanf(“%c %c%d”, &command, &prefix, &input); } while (command != ‘q’); 当我输入一个有效结构的输入,如c P101 ,它似乎再次循环,然后提示我。 即使只有一个,这似乎也会发生: scanf(“%c”, &c) 在一个循环中。 在再次提示我之前,它会进行两次循环。 是什么让它循环两次,我该如何阻止它? 当我输入较少量的输入时,编程上不会有另一个字符或数字,如q ,按Enter似乎提示我输入更多。 如何让scanf()处理单字符和双字符条目?

C:我怎么能这样做,所以scanf()输入有两种格式之一?

我需要做这个程序,它需要两个三角形并比较它们。 基本上一切都很好,除了用户输入初始数据的部分。 我的主要问题是其中一个条件是用户可以输入三角形的三边长度或三个顶点的X,Y坐标。 我需要它像以下任何一种一样工作: 此输入表示用户使用的边长: { 5 , 5 , 5 } 此输入表示用户使用顶点的X,Y坐标: { [ 1 ; 1 ] , [ 3 ; 1 ] , [ 2 ; 2 ] } 这是我的代码我是如何尝试解决它的,但出于某种原因,如果用户输入使用顶点的第一个条件,检查它是否不是边长,会搞砸一切。 #include int main() { double a, b, c, A[2], B[2], C[2]; char s; if(scanf(” { [ %lf ; %lf ] , [ […]

MPI分区矩阵成块

我想将矩阵分区为块(而不是条带),然后使用MPI_Scatter分配这些块。 我提出了有效的解决方案,但我认为它远非“最佳实践”。 我有8×8矩阵,填充0到63之间的数字。然后我将它分成4个4×4块,使用MPI_Type_vector并通过MPI_Send分配它,但这需要一些额外的计算,因为我必须计算大矩阵中每个块的偏移量。 如果我使用分散,则第一个(左上角)块被传输OK,但是其他块不是(块的开始是错误的偏移)。 那么可以使用MPI_Scatter传输矩阵块,或者进行所需分解的最佳方法是什么? 这是我的代码: #include #include #include #define SIZE 8 int main(void) { MPI_Init(NULL, NULL); int p, rank; MPI_Comm_size(MPI_COMM_WORLD, &p); MPI_Comm_rank(MPI_COMM_WORLD, &rank); char i; char a[SIZE*SIZE]; char b[(SIZE/2)*(SIZE/2)]; MPI_Datatype columntype; MPI_Datatype columntype2; MPI_Type_vector(4, 4, SIZE, MPI_CHAR, &columntype2); MPI_Type_create_resized( columntype2, 0, sizeof(MPI_CHAR), &columntype ); MPI_Type_commit(&columntype); if(rank == 0) { for( i = 0; i […]

为什么我不能创建一个大小由全局变量确定的数组?

为什么数组不能通过全局变量size初始化? #include int size = 5; int main() { int a[size] = {1, 2, 3, 4, 5}; printf(“%d”, a[0]); return 0; } 编译错误显示为 可能无法初始化可变大小的对象 据我说,数组应该按size初始化。 如果我坚持使用全局变量(如果可能的话),会有什么答案?

Valgrind报告了一个非常简单的C程序的错误

我正在从Learn C The Hard Way学习C语言。 我正在练习6 ,虽然我可以使它工作,但valgrind会报告很多错误。 这是从文件ex6.c删除的最小程序: #include int main(int argc, char *argv[]) { char initial = ‘A’; float power = 2.345f; printf(“Character is %c.\n”, initial); printf(“You have %f levels of power.\n”, power); return 0; } Makefile内容只是CFLAGS=-Wall -g 。 我使用$ make ex6编译程序(没有编译器警告或错误)。 使用$ ./ex6执行会产生预期的输出。 当我用$ valgrind ./ex6运行程序时,我得到的错误是我无法解决的。 这是完整的输出: ==69691== Memcheck, a memory error detector […]

Carrays排序技巧

a=[1,3,6,7,1,2] 哪个是排序以下数组的最佳排序技术,如果有重复,如何处理它们。 也是最好的分拣技术…. void BubbleSort(int a[], int array_size) { int i, j, temp; for (i = 0; i < (array_size – 1); ++i) { for (j = 0; j a[j+1]) { temp = a[j+1]; a[j+1] = a[j]; a[j] = temp; } } } }

堆分配一个2D数组(不是指针数组)

我正在编写C代码,我想堆分配512 * 256字节。 为了方便起见,我希望能够使用语法数组[a] [b]访问元素; 没有算术来找到正确的索引。 我在网上看到的每个教程都告诉我要创建一个指针数组,指向我在数组中想要的行数组。 这意味着每个子数组都需要单独进行malloc和free。 我感兴趣的是一个解决方案,只需要一次调用malloc和一次调用free。(因此所有元素都是连续的)我认为这是可能的,因为我不会构造一个锯齿状数组。 如果有人可以分享声明这样一个数组的语法,我将不胜感激。