#include <stdio.h>
#include <stdlib.h>
#include <string.h>
FILE *fp;
struct student {
char name[20];
int age;
char has;
} STU1;
int main()
{
errno_t frp;
if (fp==NULL)
{
frp = fopen_s(&fp,"awd.txt", "w+");
}
else
{
frp = fopen_s(&fp, "awd.txt", "rw+");
}
scanf_s("%s", &STU1.name,20);
scanf_s("%d", &STU1.age);
scanf_s("%s", &STU1.has,20);
if (fp == nullptr) {
return EOF;
}
|-------------------------------------------------------|
|fprintf(fp,"%s%d%s", STU1.name, STU1.age, STU1.has); |
|--------------------------------------------------------
fclose(fp);
return 0;
}
用的VS2019,只有分隔符报错(源代码没分隔符)
fprintf(fp,"%s%d%s", STU1.name, STU1.age, STU1.has);
改成fprintf(fp,"%s%d%c", STU1.name, STU1.age, STU1.has);
scanf_s("%s", &STU1.has,20);改成scanf_s("%c", &STU1.has,1);
scanf_s("%s", &STU1.name,20);改成scanf_s("%s", STU1.name,20);
修改如下,错误信息在代码中已注释。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
FILE *fp;
struct student {
char name[20];
int age;
char has;
} STU1;
int main()
{
errno_t frp;
if (fp==NULL)
{
frp = fopen_s(&fp,"awd.txt", "w+");
}
else
{
frp = fopen_s(&fp, "awd.txt", "rw+");
}
scanf_s("%s", STU1.name,20); //此处不需要&
scanf_s("%d", &STU1.age);
scanf_s("%c", &STU1.has,1); //%s接收字符串,改成%c ,20 改成1
if (fp == NULL) { //nullptr 改成NULL
return EOF;
}
fprintf(fp,"%s%d%c", STU1.name, STU1.age, STU1.has); //第三个%s改为%s
fclose(fp);
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632