这是我的代码的一部分,它应该创建一个包含10个随机整数的数组,将它们打印到文件中,然后将它们按顺序排列并将有序数组附加到文件中,
如何停止在文件中显示为ascii字符的整数?
size=10;
int nums1[size];
for(i=0;i<size;i++)
{
nums1[i]=rand();
}
FILE *fp;
if((fp=fopen("ARRAY_1", "w"))==NULL) {
printf("Cannot open file.\n");
}
if(fwrite(nums1, sizeof(int), size, fp) != size) {
printf("File read error.");
}
fclose(fp);
bubblesort(nums1,size);
if((fp=fopen("ARRAY_1", "a"))==NULL) {
printf("Cannot open file.\n");
}
if(fwrite(nums1, sizeof(int), size, fp) != size) {
printf("File read error.");
}
fclose(fp);
答案 0 :(得分:1)
如果你使用fwrite并用它写二进制数据,你不能指望文件中的文本。使用fprintf代替或代替(C ++)。
答案 1 :(得分:1)
fwrite
将调用fputc
将指定的字节输出到指定的文件。在文本编辑器中打开此文件时,它会将该数据解释为ASCII代码。您可以使用od(适用于Linux)或Debug(适用于Windows)等命令检查文件的实际内容,以显示该文件中数据的各种表示形式。
如果您希望实际整数在文本编辑器中显示为字符,请使用fprintf
:
int i;
for(i = 0; i < size; i++) {
if(fprintf(fp, "%d ", nums1[i]) < 0) {
/* An error occurred */
}
}
fprintf
将按预期工作,因为将参数(即nums1[i]
)转换为指定为第二个参数的格式。
例如,考虑
fprintf(stdout, "%d", 1);
此处,fprintf
将取数字1并将其转换为ASCII等效值(ASCII码为十进制49)并将该ASCII码输出到stdout。
答案 2 :(得分:0)
您只是将数组作为二进制数据块写入文件中。
如果要输出数组的元素,则循环中需要fprintf(fp, "%d", nums[i]);
之类的内容。