如何通过双击来读取使用fwrite直接编写的文件

时间:2014-07-16 13:30:55

标签: c visual-c++

我在文件(文本文件)中写下以下1-D数组的值,但是当我通过双击它打开它时,它是不可读的。为什么这样??另请告诉我解决方案,以便我可以写一个文件(文本文件)并通过双击它来阅读它。

#include "stdafx.h"
int main()
{FILE *fp;
int a[5] = { 1, 2, 3, 4, 5};
fp=fopen("myfile.txt", "w");
fwrite(a, sizeof(int), 5, fp);
fclose(fp);
}

3 个答案:

答案 0 :(得分:2)

fwrite将二进制值写入文件。如果您正在编写文本值,则可能需要使用fprintf。

试试这个:

#include <stdio.h>

int main()
{
    FILE *fp;
    int a[5] = { 1, 2, 3, 4, 5};
    fp=fopen("myfile.txt", "w");
    for( int i=0; i<5; ++i )
    {
        fprintf(fp, "%d ", a[i]);
    }
    fclose(fp);
}

见:

http://www.cplusplus.com/reference/cstdio/fwrite

http://www.cplusplus.com/reference/cstdio/fprintf

答案 1 :(得分:0)

您正在将文字数字1-5写入文件,这些文件可能无法通过您使用的任何程序正确显示。

如果你想写下对应于“1” - “5”的字符,请使用fprintf或fstream。

答案 2 :(得分:0)

字符以ASCII表示 - 数值。 当用1到5声明数组并用fwrite()写它时,你的意思是&#34;写下这里表示的字符&#34;而不是数字,这意味着它将把它视为具有该ASCII值的字符。 如果你想写一个字符1,你应该写'1'来将它声明为一个字符并说你正在使用它的ASCII(&#39; 1&#39的ASCII ;是49)。 这是ASCII表: http://www.asciitable.com/ 如果您以这些值查看ASCII表,您会发现这些字符不是常规字符,您无法查看它们,它们没有字体或其他东西 - 它只是通常用于计算机本身。例如,结束字符串为NULL(ASCII为0)。 例如,在尝试编写第一个元素时,您尝试编写SOH,依此类推。 要更正你的代码,你应该放两个撇号,一个来自数字的每一边,用一个数字,一个字符声明它,如下:

int a[5] = {'1', '2', '3', '4', '5'};

并且使用int仅使用4个字节,因为您可以看到最多256个字符,可以用一个字节表示(一个字节--8位 - 2 ^ 8 = 256个可以表示的值在一个字节中)所以你要声明:

char a[5] = {'1', '2', '3', '4', '5'};

节省一些记忆。