Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 我的.dat文件有什么问题_C - Fatal编程技术网

C 我的.dat文件有什么问题

C 我的.dat文件有什么问题,c,C,我的代码获取一个字符串,将其写入.dat文件,然后从.dat文件中读取它并将其发布到控制台中 我的问题是,我所知道的.dat应该被编码,我不能简单地打开它,看看里面有什么。但是,当我用记事本打开d.at文件时,它的行为与.txt文件相同,我可以看到它写的所有内容 #include <stdio.h> #include <stdlib.h> int main() { FILE *f; char s[100],g[100]; if((f=fo

我的代码获取一个字符串,将其写入
.dat
文件,然后从
.dat
文件中读取它并将其发布到控制台中

我的问题是,我所知道的
.dat
应该被编码,我不能简单地打开它,看看里面有什么。但是,当我用记事本打开
d.at
文件时,它的行为与
.txt
文件相同,我可以看到它写的所有内容

   #include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE *f;
    char s[100],g[100];

    if((f=fopen("text.dat","wb"))==NULL)
    {
        exit(1);
    }
    printf("write text: "); gets(s);
    int n=strlen(s);
    fwrite(s,sizeof(s[0]),n,f);
    fclose (f);
    if((f=fopen("text.dat","rb"))==NULL)
    {
        exit(1);
    }
    fread(g,sizeof(g[0]),strlen(s),f);
    puts(g);
    return 0;
}
#包括
#包括
int main()
{
文件*f;
chars[100],g[100];
if((f=fopen(“text.dat”,“wb”))==NULL)
{
出口(1);
}
printf(“写入文本:”;获取;
int n=strlen(s);
fwrite(s,sizeof(s[0]),n,f;
fclose(f);
if((f=fopen(“text.dat”,“rb”))==NULL)
{
出口(1);
}
fread(g,sizeof(g[0]),strlen(s),f;
put(g);
返回0;
}

您的.dat文件没有问题

我的问题是,我所知道的.dat应该被编码

编码是什么意思?将文件扩展名从.txt更改为.dat没有任何区别,事实上,这只是对其进行重命名。默认情况下,Microsoft Windows或任何其他操作系统都可以使用特定的程序打开特定的文件类型,但这并不意味着您不能使用所选的程序。
在这种情况下,记事本只需读取文件内容,即您从键盘读取并写入的字符,而无需任何“编码”(当然,ASCII编码除外)。

您的.dat文件没有任何问题

我的问题是,我所知道的.dat应该被编码

编码是什么意思?将文件扩展名从.txt更改为.dat没有任何区别,事实上,这只是对其进行重命名。默认情况下,Microsoft Windows或任何其他操作系统都可以使用特定的程序打开特定的文件类型,但这并不意味着您不能使用所选的程序。
在这种情况下,记事本只需读取文件内容,即您从键盘读取并写入的字符,而无需任何“编码”(当然ASCII编码除外)。

建议:尝试使用
fgets()
而不是使用
gets()
为什么/如何“编码”?发布完整的代码。另外,
fread(g,sizeof(g[0]),strlen(s),f)将不会读取以NUL结尾的字符串。请尝试创建一个字符串并显示给我们。我所说的“完成”当然是指变量声明。至于你的问题,文件是编码的,不管你从终端读到什么编码,很可能是ASCII码。这意味着你所写的也将是作为纯文本可读的编码(即ASCII)。建议:尝试使用
fgets()
而不是使用
gets()
为什么/如何“编码”?发布完整的代码。另外,
fread(g,sizeof(g[0]),strlen(s),f)将不会读取以NUL结尾的字符串。请尝试创建一个字符串并显示给我们。我所说的“完成”当然是指变量声明。至于你的问题,文件是编码的,不管你从终端读到什么编码,很可能是ASCII码。这意味着您编写的代码也将是可作为纯文本阅读的编码(即ASCII)。