【问题标题】:fwrite => fprintffwrite => fprintf
【发布时间】:2011-06-21 13:51:41
【问题描述】:

我在将fwrite(tmp_array, sizeof(int), num, f); 更改为fprintf 时遇到问题。

有人可以帮我看看吗?

 void generate_random_sorted_file(const char *file_name, int num)
 {
     FILE *f = fopen(file_name, "wb");
     if (f==NULL) 
     {
         printf("could not open %s\n", file_name);
         return;
     }

     int *tmp_array = calloc(num, sizeof(int));
     int i;

     for (i=0; i<num; i++)
     tmp_array[i]=rand();

     qsort (tmp_array, num, sizeof(int), compare); /* sorts the array */
     fwrite(tmp_array, sizeof(int), num, f);

     fclose(f);
 }

【问题讨论】:

  • 需要更多信息,有什么问题?
  • 您希望 fprintf 提供什么样的格式化输出?
  • 你能告诉我们你的尝试吗?
  • 您需要说明您的要求。你希望输出是什么?例如,打印到什么?看起来像什么? (您的代码也可以更好地格式化)
  • 请停止从您的问题中删除代码。这样做会剥夺我们ftmp_arraynum 等的类型信息。

标签: c


【解决方案1】:

fprintf 会将你的整数数组写为文本,如果这是你想要的,做类似的事情

int i;
for(i = 0; i < num; i++)
  fprintf(f,"%d ",tmp_array[i]);

【讨论】:

    【解决方案2】:
    for (i=0; i<num; i++)
        fprintf(f, "%d ", tmp_array[i]);
    

    如果你想以不同的方式格式化它,你可以这样做,但这是最基本的。例如,每 10 个项目添加换行符:

    for (i=0; i<num; i++)
    {
        fprintf(f, "%d ", tmp_array[i]);
        if ((i+1) % 10 == 0)
            fprintf(f, "\n");
    }
    

    或者您可能需要制表符分隔符:

    fprintf(f, "%d\t", tmp_array[i]);
    

    【讨论】:

      【解决方案3】:

      您必须将 fwrite(...) 替换为

      for(i=0; i < num; i++)  
      fprintf( f, "%d", tmp_array[i] );  
      

      但是你为什么要这样做呢?

      【讨论】:

        【解决方案4】:

        您是在尝试编写文本文件而不是二进制文件吗?您将需要使用循环,如下所示:

        for (int i=0; i<num; ++i)
            fprintf(f, "%d\n", tmp_array[i]);
        

        【讨论】:

          【解决方案5】:

          以下 for 循环应该通过遍历 tmp_array 并将每个值打印到 f 来解决您的问题。尝试使用,

          for (int i=0; i < num; i++) {
              fprintf(f, "%d\n", tmp_array[i]);
          }
          

          【讨论】:

            猜你喜欢
            • 2014-07-02
            • 2012-05-22
            • 1970-01-01
            • 2011-09-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-12-19
            相关资源
            最近更新 更多