簡體   English   中英

fwrite => fprintf

[英]fwrite => fprintf

我在更改行fwrite(tmp_array, sizeof(int), num, f);遇到了麻煩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會將您的整數數組寫為文本,如果這是您想要的,請執行類似的操作

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

以下for循環應該通過遍歷tmp_array並將每個值打印到f來解決您的問題。 試試用,

for (int i=0; i < num; i++) {
    fprintf(f, "%d\n", tmp_array[i]);
}
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]);

您將不得不替換fwrite(...)

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

但是你為什么要那樣做呢?

您是在嘗試編寫文本文件而不是二進制文件嗎? 你將需要使用一個循環,如下所示:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM