0

私の C プログラムでこの fclose() が不正なアクセスを引き起こしている理由がわかりません。それは正常に機能していましたが、文字列が互いに等しくない場合にのみ出力するように if 条件を変更すると、突然問題が発生し始めました。不正なアクセス エラーとは別に、「newfile.txt」には何も出力されません。

    #include<stdio.h>
    #include<stdlib.h>
    #include <string.h>



    int main()
    {

        FILE * cFile;
        FILE *outputfile;

        FILE *newfile;
        cFile = fopen("input.in", "r");
        if (cFile == NULL){
        printf("bad input file");


        }
        newfile = fopen("newfile.txt", "w+");


    if (newfile == NULL){
        printf("bad newfile");

    }
        char tempstring[15];
        char tempstring2[15];

          //get each line in the cFile
       while (fscanf(cFile, "%15s", tempstring) != EOF) {


           outputfile = fopen("outputlotnum.txt", "r"); //open/(or reopen) outputfile  to check lines
          if (outputfile == NULL){
        printf("bad outputfile");
        }
            //get each line in the outputfile
           while(fscanf(outputfile, "%15s", tempstring2) != EOF){

                 //if the line from cFile doesn't match the line from outputfile,
                 //then go ahead and print the line to the newfile.txt
               if (strcmp(tempstring, tempstring2) != 0){

                    fprintf(newfile,"%15s \n", tempstring2);

               }

                 //else don't print anything and continue on to the next line

           }

           fclose(outputfile); //close the outputfile after checking all the lines for a match

       }

        fclose(newfile); //throws bad access
        fclose(cFile);


        return 0;

    }
4

1 に答える 1