0

コード ブロックを使用しており、 Cを使用してファイルを削除したいと考えています。ファイルは 2 つの機能で使用されますが、同時に使用されません。

これは、ファイルを使用する最初の関数です。

double FileRead()
{
    double n,cl,cd,result;
    FILE *fd;
    char filename[] = "save.txt";
    char buff[5024];


    if ((fd = fopen(filename, "r")) != NULL)
    {
        fseek(fd, 0, SEEK_SET);
        while(!feof(fd))
        {
            memset(buff, 0x00, 5024);
            fscanf(fd, "%[^\n]\n", buff);
        }
         sscanf(buff, "%lf %lf %lf",&n,&cl,&cd);
         printf("cl: %1.5f  cd: %1.5f\n",cl,cd);


    result = (cl/cd);
    printf("The CL/CD ratio is : %1.5f\n",result);
    }
    else
        result = 0;

        fclose(fd);

    return result;
}

これが 2 番目の関数です。

void evaluate(void)  /*evaluate the population */
{
    int mem;
    int i;
    double x[NVARS+1];
    char buffer[101] = "save.txt";

    FILE *controlpoints;

     double y[NVARS] = {1.00000,0.92544,0.82351,0.78301,0.74004,0.50199,0.40422,0.31056,        /*fixed values on x axis */
     0.18549,0.14954,0.11702,0.06331,0.02581,0.01334,0.00509,0.00000,0.00052,0.00555,0.03324,
     0.11345,0.33088,0.43678,0.60146,0.70751,0.8043,0.92047,0.98713,1.00000};



    for(mem = 0; mem < POPSIZE; mem++)
    {
        controlpoints = fopen("controlpoints2.txt","w");

        for(i = 0; i < NVARS; i++)
        {
           x[i+1] = population[mem].gene[i];

           fprintf(controlpoints,"%1.5f\n%1.5f\n",y[i],x[i+1]);

            printf("The value of population[%d].gene[%d] is %f\n",mem,i,population[mem].gene[i]);

        }

        fclose(controlpoints);
        rbspline();

        XfoilCall();

        population[mem].fitness = FileRead();

    }

  remove(buffer);
        if(remove(buffer) == 0)
          printf("File %s  deleted.\n", buffer);
        else
          fprintf(stderr, "Error deleting the file %s.\n", buffer);
}

「save.txt ファイルの削除中にエラーが発生しました」というメッセージが常に表示されます。確認して、何が間違っているのか教えてください。

4

2 に答える 2

4

2 番目の関数のコードには次が含まれます。

remove(buffer);
    if (remove(buffer) == 0)
        printf("File %s deleted.\n", buffer);
    else
        fprintf(stderr, "Error deleting the file %s.\n", buffer);

ファイルを 2 回削除し、2 回目はそこにないため、失敗を報告します。

修正: チェックされていない行を削除しremove(buffer)ます。

于 2013-03-12T19:57:40.240 に答える
1

コードのこの部分を見てください

  remove(buffer);
    if(remove(buffer) == 0)
      printf("File %s  deleted.\n", buffer);
    else

私はあなたがこれを望んでいると思います

ret=remove(buffer);
if(ret==0)
      printf("File %s  deleted.\n", buffer);
else
于 2013-03-12T20:01:11.673 に答える