fscanf %*s 供参考!建议加对打开文件返回值判断,谨防文件打开失败

网安智编 厦门萤点网络科技 2025-10-14 00:09 70 0
#include typedef struct student { char New_name[20]; char name[20]; int chines, math, english; }stu; //ma...

#include

typedef struct student
{
char New_name[20];
char name[20];
int chines, math, english;

}stu;

//main()
int main()
{
char a[20];
FILE* fp;
stu max;
printf("输入文件名:"); getch();
fgets(max.New_name, 20, stdin);
fp = fopen(max.New_name, "wt+");
if (!fp) {
fprintf(stderr, "open file %s error\n", max.New_name);
exit(0);
}
printf("输入学生名字:");
getch();
fgets(max.name, 20, stdin);
printf("请输入学生语文:");
getch();

c语言文件打开失败错误处理_fscanf %*s_fgets添加换行符导致文件打开失败

scanf_s("%d", &max.chines);
printf("请输入学生数学:"); getch();
scanf_s("%d", &max.math);
printf("请输入学生英语:");getch();
scanf_s("%d", &max.english);
fprintf(fp, "%s %d %d %d", max.name, max.chines, max.math, max.english);
rewind(fp);
fscanf_s(fp, "%s ", a);
printf("%s", a);
return 0;
}

供参考~

建议加一下对打开文件返回值的判断,很可能是文件打开失败。

fgets可能会把'\n'加到中,所以可能会导致打开失败刚刚试了一下创建文件失败

严重性 代码 说明 项目 文件 行 禁止显示状态 禁止显示状态

警告 C6387 “fp”可能是“0”: 这不符合函数“”的规范。 c语言文件格式化输入输出 A:\C语言程序\C语言文件格式化输入输出\源文件.C 67

错误(活动) E0020 未定义标识符 "FILE" c语言文件格式化输入输出 A:\c语言程序\c语言文件格式化输入输出\源文件.c 48

错误(活动) E0020 未定义标识符 "fp" c语言文件格式化输入输出 A:\c语言程序\c语言文件格式化输入输出\源文件.c 48

错误(活动) E0020 未定义标识符 "stdin" c语言文件格式化输入输出 A:\c语言程序\c语言文件格式化输入输出\源文件.c 51

错误(活动) E0020 未定义标识符 "" c语言文件格式化输入输出 A:\c语言程序\c语言文件格式化输入输出\源文件.c 54

警告 C6387 “fp”可能是“0”: 这不符合函数“”的规范。查看第 67 行以找出可能会发生此情况的前一位置 c语言文件格式化输入输出 A:\C语言程序\C语言文件格式化输入输出\源文件.C 68

警告 C6064 缺少“”的整型参数(对应于转换说明符“2”)。 c语言文件格式化输入输出 A:\C语言程序\C语言文件格式化输入输出\源文件.C 69

警告 C6387 “fp”可能是“0”: 这不符合函数“”的规范。查看第 67 行以找出可能会发生此情况的前一位置 c语言文件格式化输入输出 A:\C语言程序\C语言文件格式化输入输出\源文件.C 69

警告 C4013 “getch”未定义;假设外部返回 int c语言文件格式化输入输出 A:\c语言程序\c语言文件格式化输入输出\源文件.c 50

警告 C4013 “exit”未定义;假设外部返回 int c语言文件格式化输入输出 A:\c语言程序\c语言文件格式化输入输出\源文件.c 55

警告 C4473 “”: 没有为格式字符串传递足够的参数 c语言文件格式化输入输出 A:\c语言程序\c语言文件格式化输入输出\源文件.c 69

警告 C4996 'fopen': This or may be . using . To , use NGS. See help for . c语言文件格式化输入输出 A:\c语言程序\c语言文件格式化输入输出\源文件.c 52