救救孩子吧,C的文件和结构体?

#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