更改文件指针的路径时无法写入内存

时间:2019-02-22 22:05:03

标签: c file-pointer

但是,当我将输入和输出文件的文件指针的路径从const char * input_file =“ input.txt”;更改为../data/input.txt“时,下面的代码运行良好我收到以下错误 Memory could not be written error

如何将文件指针的路径更改为目录中的正确文件 下面是我的主程序代码

   int main(int argc, char **argv)
    {
        const char *input_file = "input.txt";
        const char *output_file = "output.txt";

        int i, j, k, n;
        int cars_arrived, total_cars, max_queue_len, running_queue_len;
        int arrival_time, wait_time, max_wait_time, running_wait_time; 
        int departure_period, departure_timer;
        int light_timer, light_duration[3] = {0, 0, 0};
        int time, increment, runtime;
        int avg_wait_time, avg_queue_len;
        double arrival_rate, lambda;

        Light light;
        queue_t *queue = (queue_t *)malloc(sizeof(queue));
        parameters *param_list = read_input_file(input_file, &n);

        FILE *output_fp = fopen(output_file, "w");
        fprintf(output_fp, "%s\n", STUDENT_ID);

      parameters* read_input_file(const char *fname, int *num_scenarios)
{
    int i, j, k, idx, value;
    keyword key;
    parameters *param_list = NULL;
    FILE *fp = fopen(fname, "r");

            /* write the output to the file */
            fprintf(output_fp, "Arrival rate: %d cars per min\n", param_list[i][0]);
            fprintf(output_fp, "Departure rate: %d s per car\n", param_list[i][1]);
            fprintf(output_fp, "Runtime: %d min\n", param_list[i][2]);
            fprintf(output_fp, "Time increment:  %d ms\n", param_list[i][3]);
            fprintf(output_fp, "Light sequence: Green %d s; Amber %d s; Red %d s\n", 
                    param_list[i][6], param_list[i][5], param_list[i][4]);
            fprintf(output_fp, "Average length: %d cars\n", avg_queue_len);
            fprintf(output_fp, "Maximum length: %d cars\n", max_queue_len);
            fprintf(output_fp, "Average wait: %d s\n", avg_wait_time / 1000);
            fprintf(output_fp, "Maximum wait: %d s\n", max_wait_time / 1000);
        }

        fclose(output_fp);
        /* free memory */
        free(queue);
        free(param_list);

        return 0;

    }

0 个答案:

没有答案