Tag: 函数

Realloc和sscanf成为一个函数

我有一个有num行的文件:每行包含一个数字。 我想将每个数字保存到矢量*vet 。 为什么这段代码不起作用? Segmentation fault (core dumped) 我认为错误是save_numbers函数中的sscanf ,但我不知道为什么。 #include #include /* This function allocate memory and save numbers into a vector */ int save_numbers (int **vet, int *num) { FILE *fin; int i = 0; char buff[10]; if ( !(fin = fopen(“numbers.dat”, “r”)) ) return 1; while ( fgets(buff, sizeof(buff), fin) ) { […]

为什么用括号括起函数?

我展示了一些我明白的代码。 以下代码是示例代码。 static void (_func)(int p); int main() { …. _func(3); …. } static void (_func)(int p) { …. } 一般我知道用括号括起来的函数用’*’作为函数指针(* _func),但是上面代码为什么在函数声明时用括号括起函数? 有什么理由使用这种方法吗?

从C中的另一个函数调用main函数

我有一个main函数,它在初始化期间运行一些函数,然后运行一个等待来自UART的命令的while循环。 当我看到一个特定的命令(让我们说重置)时,我调用一个返回值的函数。 我想做以下事情: 保存返回的值 使用返回的值再次启动main函数。 在main中的函数初始化期间需要返回值。 我是C的新手,我无法找出一种方法来保存main中的变量值。

重新分配成一个函数

我的问题是’realloc’。 以下代码正常工作(没有警告): #include #include int main () { int num=10; int *vet; int i; for (i=0; i<num; i++) { /* allocate memory of vet to contains (i+1) int */ vet = (int*) realloc ( vet, (i+1) * sizeof(int) ); /* write numbers in the allocated memory */ vet[i] = 321 + i; } /* print […]

将修改后的数组值传递回C中的main函数

对不起,如果标题仍然含糊不清。 我正在为学校做这个任务,下面是我定义的函数原型,main函数和change_array函数。 该程序的总体目标是允许用户输入5个不同的数字并存储到数组中。 那么change_array函数的作用是将任何低于10的数字加倍(乘以2),但是,它目前没有按照预期的方式进行。 我真的被卡住了,所以我想知道是否有人可以指出我的错误。 我不是要求一个确切的答案,我只需要一些指示和指导。 出现问题的是change_array函数没有改变用户给出的任何值。 因此,例如,如果用户输入“3,5,6,12,32”,则我的程序的输出仍然是“3,5,6,12,32”。 但是我真正想要的是,在从change_array函数传回数组之后,“6,10,12,12,32”。 编辑完整的程序: #include #define SIZE 5 void fill_array(double x[], int s); void change_array(double x[], int s); void print_array(double x[], int s); main() { double x[SIZE]; fill_array(x, SIZE); printf(“The array is as: \n”); print_array(x, SIZE); change_array(x, SIZE); printf(“After change, the array is: \n”); print_array(x, SIZE); } void fill_array(double […]

getc()作为宏和C标准库函数定义,连贯吗?

在[7.1.4库函数的使用]中 ,我读到: 标题中声明的任何函数可以另外实现为标题中定义的函数式宏… 和 任何实现为宏的库函数的调用都应扩展为仅对其每个参数进行一次计算的代码… 然后对于getc , [7.21.7.5 getc函数] : getc函数等效于fgetc,除非它实现为宏,它可能会多次评估流,因此参数永远不应该是带有副作用的表达式。 getc的定义是: 与库函数定义相矛盾? 反过来? 这是标准中的不连贯吗? 或者这是否意味着如果getc完全实现(似乎不符合但是?)作为宏,它可能会两次评估它的参数?

C多种类型的function

我想在C中编写一些函数,但它们必须适用于所有数字类型(int,float,double)。 什么是好习惯? 在void上使用指针(当然还有指向函数的指针)? 或者为每种类型写一个不同的function? 例如: float func(float a, float b) { return a+b; }

模块化编译时arrays扩展

让我们说我在这个场景中: main.c: #include #include #include “header.h” int iCanProcess (char* gimmeSmthToProcess); int processingFunctionsCount = 0; int (*(*processingFunctions)) (char*) = NULL; int addProcessingFunction(int (*fct)(char*)) { processingFunctionsCount++; processingFunctions = realloc(processingFunctions, sizeof(int (*)(char*))*ProcessingFunctionsCount); processingFunctions[processingFunctionsCount-1] = fct; } int main(int argc, char *argv[]) { char* dataToProcess = “I am some veeeery lenghty data”; addProcessingFunction(iCanProcess); [ … ] for(unsigned int i […]

在ANSI C前语法中混淆函数调用

我正在处理一些pre-ANSI C语法。 请参阅我在一个条件中有以下函数调用 BPNN *net; // Some more code double val; // Some more code, and then, if (evaluate_performance(net, &val, 0)) { 但是函数evaluate_performance定义如下( 在具有上述条件的函数下面 ): evaluate_performance(net, err) BPNN *net; double *err; { 为什么用两个参数定义evaluate_performance ,但用三个参数调用? ‘0’是什么意思? 顺便说一下,我很确定它没有调用其他地方定义的其他evaluate_performance ; 我已经浏览了所有涉及的文件,我很确定我们应该在这里讨论相同的evaluate_performance 。 谢谢!

使用参数调用obj-c方法

我已经将c风格的函数更改为objective-c方法。 作为一种方法,我该如何使用它? NSString* myfunc( int x ) is now: – (NSString *)myFuncWithParam:(int)x c code: myString = myfunc(x); // works obj-c code: myString = myFuncWithParam(x); // fails to compile. 从其中一个答案:myString = [object myFuncWithParam:x]; 在那种情况下,什么会“反对”?