fprintf崩溃我的程序

时间:2013-11-17 16:16:05

标签: c crash printf

首先是一些背景(不重要,如果你愿意,可以跳到下一段): 我必须编写一个软件来演示FFT算法(作为uni项目的一部分)。我要求用户选择正弦和余弦的混合或矩形函数,询问用户必要的参数,生成函数(在复杂的数组中,实数组件在0,2 ......和虚数在1,3中...),用零填充数据到下一个2的整数幂,将其传递给FFT函数(目前只是从C中的Numerical Recipes复制,一旦我的程序工作就会找到更好的东西!)然后我打印到文本文件。

除了我的打印功能外,一切都很顺利:

int printToFile (double* array, unsigned long pointNum, int eqnNo)
{
double f, df;
FILE *outputReal, *outputImag;
/*Open files of different names depending on which function was generated*/
if(eqnNo == 1)
{
    outputReal = fopen("refft1.txt", "w");
    outputImag = fopen("imfft1.txt", "w");
    f = 0;
    df = 1/DX;
}
else
{
    outputReal = fopen("refft2.txt", "w");
    outputImag = fopen("imfft2.txt", "w");
    f = 0;
    df = 1/DT;
}
printf("Checking if stuff opened correctl...y\n");
/*Check the file pointers*/
if(!outputReal)
{
    printf("couldnt open file!\n");
    perror("Error: ");
    fclose(outputReal);
    free(array);
    array = NULL;
    exit(1);
}
if(!outputImag)
{
    printf("couldnt open file!\n");
    perror("Error: ");
    fclose(outputImag);
    free(array);
    array = NULL;
    exit(1);
}
printf("Stuff opened!\n");

int j, i;

/*Print array elements to each file on the fly*/
for(i=0, j=1; i<pointNum; i++)
{
    if(j > 0)/*real*/
    {
        /*printf("%G %G\n", f, array[i]);*/
        fprintf(outputReal, "%G %G\n", f, array[i]);
    }
    else/*imaginary*/
    {
        fprintf(outputImag, "%G %G\n", f, array[i]);
        /*printf("%G %G\n", f, array[i]);*/
        f += df;
    }
    j *= -1;
}

fclose(outputReal);
fclose(outputImag);
} 

它到达应该fprintf到文件的位置,程序只是停止(文件打开没有错误)。如果我用printfs替换fprintfs,它会愉快地打印出转换后的数组元素。如果我只是不在main中调用FFT函数并打印填充的用户生成的函数,它将打印到文件没问题。

有人可以提出我可能做错的事吗?我的猜测是,无论是我的打印功能是做坏事,还是通过调用FFT我搞砸了一些东西,这意味着fprintf无法正常工作(直接从NRiC复制,现在将浮动更改为双打)。不想在这里发布我的整个代码(目前是430行),但我在函数生成器和reallocs中有callocs用于从控制台读取用户输入,这可能也有问题,虽然我已经检查了它们,但这不会解释为什么它只在FFT之后中断。非常感谢帮助!

0 个答案:

没有答案