gpt4 book ai didi

c++ - 如果我写一个字符串,fprintf 会将 '\0' 写入文件吗?

转载 作者:太空宇宙 更新时间:2023-11-04 14:48:04 24 4
gpt4 key购买 nike

我写了下面的代码来理解文件操作。

#include "stdafx.h"
#include <iostream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
FILE *fp = fopen("c:\\te_st.txt", "w+");

fprintf(fp, "aa");

char *buf = new char[4];

fseek(fp, 0, SEEK_SET);

int bytes = fscanf(fp, "%s", buf);

cout << bytes << " " << buf << endl;

fclose(fp);

delete buf;

return 0;
}

我怀疑 fprintf() 是否写入字符“a”、“a”和“\0”或“a”和“a”。当我使用 fscanf 从文件读取后打印输出时,显示了“aa”。但是当我使用 fread() 从文件中读取字节时,如下所示,

fread(buf, 3, 1, fp);

“aa”和一些垃圾字符正在显示。谁能告诉我有什么区别?

最佳答案

does fprintf write '\0' in to the file if I write a string?

没有。
下面的代码将“aa”写入文件。

FILE *fp = fopen("c:\\te_st.txt", "w+");

fprintf(fp, "aa");

当我们以十六进制模式查看文件时,我们发现它没有打印任何空终止符:

6161

关于c++ - 如果我写一个字符串,fprintf 会将 '\0' 写入文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31223203/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com