我刚刚写完一个大型 C 代码,但是当我保存并再次打开时,文件包含奇怪的字符:"@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^ @^@^@^@^@0000664^@0001750^@0001750^@0000000031"
我该如何恢复该文件?
我已经写这个程序一整天了。:((
答案1
这可能不太可能,但这看起来很像 TAR 文件头的一部分。可能你曾经尝试用 tar 备份它,并使用与输出文件相同的文件名?我怀疑这一点的原因是 TAR 文件头以以下内容开头:
char filename[100]; // null padded
char mode[8]; // octal
char nuid[8]; // octal
char ngud[8];
char size[12];
...
因此,查看该代码片段,它符合以下模式:文件为 rw-rw-r,所有者/组 ID 为 1000,大小在 200 到 207 字节之间(看起来该字段在您的剪切粘贴中被截断了)。如果文件在第 257 个字符处有“ustar”,则表明该文件存在问题。在这种情况下,只需使用 tar 命令尝试从中提取(以防万一,将其放在临时目录中),希望您能从中获得一些信息。
答案2
退出 vim 之前输入
:e! your_file_path
尝试加载文件。这是以防您只是尝试编辑错误的文件。
在另一个 shell 中,扫描 your_filename.recover 或 file_name.swp 文件。如果找到,则启动
vim -r file_name
应该可以取回你的文件。
答案3
答案4
^@ 是二进制零、低值、'\0'、0x00。最好的猜测是你有一个零分隔的字符串,并且你正在写出数组的长度char
而不是使用strlen
。