首页 > 其他分享 >标准IO函数:fprintf和fscanf,fread和fwrite

标准IO函数:fprintf和fscanf,fread和fwrite

时间:2024-08-21 20:23:42浏览次数:11  
标签:code name fscanf int fwrite fread printf reg log

1.使用分文件编译,实现注册登录界面,使用fgets,fscanf,fpritnf函数。

主函数

#include "log.h"
int main(int argc, const char *argv[])
{
	int key;
	while(1)
	{
		printf("**********1.注册**********\n");
		printf("**********2.登录**********\n");
		printf("**********3.退出**********\n");

		printf("\n请输入要执行的步骤:");
		scanf("%d",&key);
		getchar();

		switch(key)
		{
		case 1:regist();break;
		case 2:login();break;
		case 3:exit(EXIT_SUCCESS);break;
		}
	}
	
	return 0;
} 

 注册函数

#include"log.h"

int regist()
{
	user reg;
	printf("请输入注册账户:");
	fgets(reg.name,sizeof(reg.name),stdin);

	printf("请输入注册账户的密码:");
	fgets(reg.code,sizeof(reg.code),stdin);

	FILE *fp = fopen("./user.txt","w");
	if(fp==NULL)
	 {
		perror("fopen");
		 return -1;
	 }

	fprintf(fp,"%s%s",reg.name,reg.code);

	printf("注册成功\n");
	fclose(fp);

	return 0;

}

 登录函数:

#include"log.h"


int login()
{
	user reg,log;
	
	printf("请输入登录账户:");
    fgets(log.name,sizeof(log.name),stdin);

    printf("请输入登录密码:");
    fgets(log.code,sizeof(log.code),stdin);


	FILE *fp = fopen("./user.txt","r");
    if(fp==NULL)
    {
        perror("fopen");
        return -1;
    }

	fscanf(fp,"%s%s",reg.name,reg.code);
	reg.name[strlen(reg.name)+1]='\0';
	reg.name[strlen(reg.name)]='\n';
	reg.code[strlen(reg.code)]='\n';
	reg.code[strlen(reg.code)+1]='\0';

	printf("%s%s",reg.name,reg.code);

    if(strcmp(log.name,reg.name)==0&&
            strcmp(log.code,reg.code)==0)
    {
        printf("登录成功\n");
    }
    else
    {
        printf("登录失败,密码或账户名错误\n");
    }
	return 0;




}

另一种写法: 

int remove_line(char *str)
{
	int len = strlen(str);
    if(len>0 && str[len-1] =='\n')
	{
        str[len-1] ='\0';
    }
}
int login()
{
	user reg,log;

	printf("请输入登录账户:");
    fgets(log.name,sizeof(log.name),stdin);
	remove_line(log.name);
    printf("请输入登录密码:");
    fgets(log.code,sizeof(log.code),stdin);
	remove_line(log.code);

	FILE *fp = fopen("./user.txt","r");
    if(fp==NULL)
    {
        perror("fopen");
        return -1;
    }

	fscanf(fp,"%s%s",reg.name,reg.code);
	printf("%s%s",reg.name,reg.code);

    if(strcmp(log.name,reg.name)==0&&
            strcmp(log.code,reg.code)==0)
    {
        printf("登录成功\n");
    }
    else
    {
        printf("登录失败,密码或账户名错误\n");
    }
	return 0;

}

 

头文件:定义存储账户和密码的结构体 

#ifndef __LOG_H__
#define __LOG_H__

#include<myhead.h>

typedef struct
{
	char name[50];
	char code[50];
}user;

int login();
int regist();



#endif

2.使用fread和fwrite拷贝文件。

#include <myhead.h>
int main(int argc, const char *argv[])
{
	
	char arr[1024];
	FILE *fp1 = fopen("./1.txt","r");//只读方式打开文件1
    if(NULL==fp1)
    {
        perror("fp1");
        return -1;
    }
	fread(arr,sizeof(arr),1,fp1);

	
    FILE *fp2 = fopen("./2.txt","w");//只写清空方式打开文件2
    if(NULL==fp2)
    {
        perror("fp2");
        return -1;
    }

	fwrite(arr,sizeof(arr),1,fp2);

	fclose(fp1);
	fclose(fp2);

	char arr1[1024];
	fp2 = fopen("./2.txt","r");//只读方式打开文件2
    if(NULL==fp2)
    {
        perror("fp2");
        return -1;
	}
	fread(arr1,1,sizeof(arr1),fp2);
	printf("%s\n",arr1);
	fclose(fp2);
	return 0;
}

标签:code,name,fscanf,int,fwrite,fread,printf,reg,log
From: https://blog.csdn.net/m0_58572142/article/details/141401453

相关文章

  • Linux c fread/fseek 函数
    函数:freadsize_tfread(void*ptr,size_tsize,size_tnmemb,FILE*stream);参数说明:参数buffer指向要读取的数组中首个对象的指针size每个对象的大小(单位是字节)count要读取的对象个数stream输入流函数:fseekintfseek(FILE*stream,longintoffse......
  • 用fscanf\fprintf fgetc\fputc fgets\fputs实现文件拷贝。
     1.fscanf\fprintf#include<stdio.h>intmain(intargc,constchar*argv[]){FILE*fp=fopen("./1.c","r");if(NULL==fp){perror("fopen");return-1;}FILE*fp1=fopen......
  • implicit declaration of item ‘write’; did him mean ‘fwrite’?
     include<unistd.h> implicitdeclarationofitem‘write’;didhimmean‘fwrite’?AskQuestionQuestions 2years,5monthsagoModified 2years,5monthsagoViewed 5ktimes 0IODINbundledancaseofauncomplicatednote-taking......
  • fwrite、fread——《初学C语言第59天》
     ////————————fwrite//#include<stdio.h>//structS//{// chararr[10];// intage;// floatscore;//};//intmain()//{// structSs={"zhangjie",25,50.25};// //以二进制的形式写到文件中// FILE*pf=fopen("text.txt","wb");//......
  • 文件IO-fwrite-fread-fscanf-fflush
    fwrite把ptr所指向的数组中的数据写入到给定流stream中。size_tfwrite(constvoid*ptr,size_tsize,size_tnmemb,FILE*stream)参数ptr--这是指向要被写入的元素数组的指针。size--这是要被写入的每个元素的大小,以字节为单位。nmemb--这是元素的个数,每个元......
  • fread实现getchar(加速!!!)
    fread实现的getchar代码:inlinecharget(){ staticcharbuf[100000],*p1=buf,*p2=buf; returnp1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;}以下内容由chatgpt生成:上面的代码定义了一个名为get()的内联函数,它从标准输入......
  • fread函数
    fread函数的原型是:size_tfread(void*ch,size_tmode,size_tnumber,FILE*fp)。第一个参数是数组的地址;第二个参数是数据类型的大小;第三个参数是需要读取多少个这样的数据类型;第四个参数是文件指针。该函数正常情况下返回的值是number,这表示读取了多少个数据。例子:doubleret[1......
  • exifread库可以获取的图片元数据信息
    使用exifread库可以提取图像的各种基础信息,包括但不限于以下内容:1.相机信息:-相机制造商(Make)-相机型号(Model)-镜头制造商(LensMake)-镜头型号(LensModel)2.拍摄参数:-光圈值(ApertureValue)-快门速度(ShutterSpeedValue)-曝光时间(ExposureTime)-ISO感光度......
  • Ubuntu18.04安装opencv和opencv_contrib1.undefined reference to `TIFFReadDirectory
    Ubuntu18.04安装opencv和opencv_contrib目录​​Ubuntu18.04安装opencv和opencv_contrib​​​​1.版本​​​​2.源码编译和安装opencv和opencv_contrib​​​​(1)下载o......
  • gffread软件实现基因组注释文件gff 和 gtf的相互转换
     001、下载测试gff文件,以山羊的gff注释文件为例[root@pc1test]#wgethttps://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/001/704/415/GCF_001704415.2_ARS1.2/GCF_00170......