在c中没有写入文件

时间:2016-03-19 14:56:21

标签: c file

使用两个文件的相同代码在两个不同的文件中打印。 第二个文件(my_rank1.out)中没有写入任何内容,而在另一个文件中,所有内容都已正确写入

  FILE *my_pointer; 
  FILE *my_rank_ptr;
  for(int name = 1;name<=5;name++)
  {
      //read(name)
      char filename[21];
      sprintf(filename, "port%d.out", name);

      char temp_file[21];
      sprintf(temp_file, "my_rank%d.out", name);


      my_rank_ptr = fopen(temp_file,"w");
      my_pointer = fopen(filename,"w");


      fprintf(my_rank_ptr, "lambda\tcrossprob\tmutprob\tbasic_seed\trun\tseed\t");
      for(int i=1;i<=nstock;i++)
      {
        fprintf(my_rank_ptr, "var%d\t",i);
      }
      fprintf(my_rank_ptr, "fitness value\n"); 



      fprintf(my_pointer, "lambda\tcrossprob\tmutprob\tbasic_seed\trun\tseed\t");
      for(int i=1;i<=nstock;i++)
      {
        fprintf(my_pointer, "var%d\t",i);
      }
      fprintf(my_pointer, "fitness value\n");

//Some code follows this
      fclose(my_pointer);
      fclose(my_rank_ptr);

}

3 个答案:

答案 0 :(得分:0)

每次

后添加
#!/usr/bin/env python3

from solver import main
main.gui_mode()

fprintf(my_rank_ptr ....

因为你想写两个文件相同的东西

答案 1 :(得分:0)

如评论中所述,您是否正在检查fopen声明的输出?

...
my_rank_ptr = fopen(temp_file,"w");
if(!my_rank_ptr) return -1;
my_pointer = fopen(filename,"w");   
if(!my_pointer) return -1;
...  

如果你的FILE指针不是NULL,那么为了简单你可以 安排所有的printf语句使用相同的循环:

      fprintf(my_rank_ptr, "lambda\tcrossprob\tmutprob\tbasic_seed\trun\tseed\t");
      fprintf(my_pointer, "lambda\tcrossprob\tmutprob\tbasic_seed\trun\tseed\t");
      for(int i=1;i<=nstock;i++)
      {
        fprintf(my_rank_ptr, "var%d\t",i);
        fprintf(my_pointer, "var%d\t",i); 
      }
      fprintf(my_rank_ptr, "fitness value\n");
      fprintf(my_pointer, "fitness value\n");

答案 2 :(得分:0)

尝试打开文件进行写入时,可能会收到权限错误。在尝试写入文件之前,应始终检查fopen()调用是否成功。

for all t in threads: t.join()

if(!my_rank_ptr)//无法打开...