0

我有一个系数为 256 的文件,我想反转该文件的每个 64 系数并将结果保存在另一个文件中。我尝试编写我的想法,但结果是错误的。

int main()
{     
    /***********************************inversion coefficients*****************/
    FILE* org = NULL; // original file
    FILE* inv = NULL; // file content inverse coefficient
    float det; // readed coefficient 
    float tabinv[256]; // intermediate table witch will content iverse coefficient
    org = fopen("det.txt", "r");
    inv = fopen("inverse.txt", "w");
    int j = 64;
    int p = j;
    int copt = 0;
    while (copt < 256)
    {
        for (int i = j - 64; i < j; i++)
        {

            fscanf(org, "%f", &det);

            tabinv[p - 1 - i] = det;

            copt++;

        }

        p = p + 64;

        j = p;
    }
    for (int k = 0; k < 256; k++){
        fprintf(inv, "%f\n", tabinv[k]);

    }
    fclose(org);
    fclose(inv);
    return 0;
}
4

1 回答 1

0

你在这一行有修复-

 tabinv[p - 1 - i] = det; // Don't use same variable i.

通常从表达式int i = j - 64中,当 p=j=64,i=0 时,它存储从tabinv[63]到的值tabinv[0]。但是当 p=j=128, i=64 时,它也开始存储从tabinv[63]to的值tabinv[0]。您需要解决此问题以避免错误。

尝试以下更改-

for (int i = j - 64,int k = 0; i < j; i++,k++) // Fix 1
{

    fscanf(org, "%f", &det);

    tabinv[p - 1 - k] = det; // Fix 2

    copt++;

}
于 2014-08-02T12:39:17.477 回答