除非results是全局的,否则它是未定义的。
从它的外观上看,您已经打开了一个文件(流),就像results在 main 中一样。如果是这样,它只存在于 main 的范围内。
将其传递给函数。不建议将其设为全局。
它看起来像:
void new_page(FILE *results, float *a, float *b, float *c, int *d){
fprintf(results,"\nPage Totals: %f\t%f\t%f\t%d", *a,*b,*c,*d);
}
还; 如果您在单独的文件中有此功能,那么main(),正如您所说的那样fprintf有效-您也必须包含stdio.h在该文件中。
编辑:听起来你在函数签名和原型等方面做错了。
作为一个简单的例子(不需要检查 fopen 等):
#include <stdio.h>
void foo(FILE * fp)
{
fprintf(fp, "HELLO\n");
}
int main(void)
{
FILE *fp;
fp = fopen("blabla", "w");
foo(fp);
fclose(fp);
return 0;
}
还; 你说你的编译器没有抱怨。您是否使用了广泛的警告?如果不是,你应该。即海合会:
$ gcc -Wall -Wextra -pedantic -o my_prog my_source.c
我通常还会添加-std=c89,或者如果需要,-std=c99。
然后用 valgrind 运行它:
$ valgrind ./my_prog
这两个步骤将为您提供很多提示和线索,以找出可能出错的地方。