文件操作:新手初试遇到的小问题,及其解决
首先,我正常写出了这样一段代码:
#include<stdio.h>
int main() {
FILE* fp = fopen("C:\\c语言2026\\Project3\\test.txt", "w");
//检验是否成功打开
if (fp == NULL) {
perror("fopen");
return 1;
}
else {
printf("打开文件成功");
}
fclose(fp);
fp=NULL;
return 0;
}
第一个问题:
但是vs2026下面提示信息告诉我fopen可能不安全,得加上_CRT_SECURE_NO_WARNINGS,于是我加上
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
FILE* fp = fopen("C:\\c语言vs2026\\Project3\\test.txt", "w");
//检验是否成功打开
if (fp == NULL) {
perror("fopen");
return 1;
}
else {
printf("打开文件成功");
}
fclose(fp);
fp=NULL;
return 0;
}
第二个问题:
但是它不能运行,告诉我no such file or directory
我问了deepseek之后,知道了fopen里面不能含中文
于是我改成第三版:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
FILE* fp = fopen("C:\\c_vs2026\\Project3\\test.txt", "w");
//检验是否成功打开
if (fp == NULL) {
perror("fopen");
return 1;
}
else {
printf("打开文件成功");
}
fclose(fp);
fp=NULL;
return 0;
}
第三个问题:
这次没有输出错误,但是程序并没有像我所想输出"打开文件成功",它输出了一堆乱码。

这个是运行成功了还是失败了?我要搞清楚一下。
咨询了DeepSeek之后,我进行验证
验证:
我加入了putc进行验证
代码如下
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
FILE* fp = fopen("C:\\c_vs2026\\Project3\\test.txt", "w");
//检验是否成功打开
if (fp == NULL) {
perror("fopen");
return 1;
}
else {
printf("打开文件成功");
}
putc('a', fp);
putc('b', fp);
fclose(fp);
fp=NULL;
return 0;
}
运行之后

文件里有'a'和'b',事实证明文件打开与写入成功了!
那为什么会是乱码呢?
咨询了deepseek之后,它说可能是中文编码不匹配,让我试下英文success来进行验证

验证成功,文件打开与写入就是可以的,是中文汉字的原因。
那我如果非要使用汉字,怎么解决呢?
咨询deepseek后,我进一步改进
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main() {
system("chcp 65001 > nul");
FILE* fp = fopen("C:\\c_vs2026\\Project3\\test.txt", "w");
//检验是否成功打开
if (fp == NULL) {
perror("fopen");
return 1;
}
else {
printf("文件打开成功");
}
putc('a', fp);
putc('b', fp);
fclose(fp);
fp=NULL;
return 0;
}
终于,成功!

我又想到:这个是乱码的更深层原因是什么?因为我平常写的中文不会输出乱码。
我打算运行一个及其简单的printf进行验证
#include<stdio.h>
int main(){
printf("打开文件成功");
return 0;
}
竟然也是乱码,说明是更深层的原因!
原来正常的也不行了,我必须做出更改。
总不能每次都要加system吧。
deepseek告诉我这个原因是:{vs自作聪明把简体中文那个编码改了,于是出现乱码。
}
咨询deepseek后,我进行更改。
(deepseek给出的答案:
一劳永逸的解决方案
手动把文件编码改成 GBK,以后就永远正常了:
1. 在 VS 里打开你的 .c 文件
2. 点击菜单 文件 → 另存为
3. 点击保存按钮旁边的小箭头 → 选择 “编码保存”
4. 在弹出的窗口里,选择 “简体中文(GB2312) - 代码页 936”
5. 点击 确定,然后覆盖保存
6. 重新运行程序
)
改完后,删去system,运行程序进行验证

成功了!
然后我又看了下新项目中文有没有遇到变成乱码这种问题。
刚开始是也有这种问题,但是我把源文件删了之后再新建一个就没有问题了。
至此,文件打开过程中的全部问题都得到了解决。
如果后续再遇到问题,我再补一个后续。
更多推荐




所有评论(0)