2022.11.7---标准IO

本文介绍了如何使用C语言进行文件操作,包括计算文件大小、统计文件行数及实现用户注册功能,并确保用户名唯一性。通过具体示例展示了fscanf、fgetc等函数的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 要求实现类似上述练习的注册功能,要求文件中的每一个用户名不允许相同;
提示:需要先读取文件中的用户名,与终端输入的用户名比较
如果文件中没有该用户名,则将注册用户写入
如果文件中有该用户名,则提示注册失败,用户名已经存在;
#include <stdio.h>
#include <string.h>
#include <errno.h>
int main(int argc, const char *argv[])
{
	FILE *fp=fopen("./account.txt","a+");
	if(fp==NULL)
	{
		perror("");
		return -1;
	}
	char name[10],passwd[10];
	printf("请输入用户名:");
	scanf("%s",name);
	char fname[10],fpasswd[10];
	int flag=0;
	while(1)
	{
		if(fscanf(fp,"%s %s",fname,fpasswd)==EOF)
		{
			if(errno==0)
			{
				break;
			}
			else
			{
				perror("");
				return -1;
			}
		}
		if(strcmp(name,fname)==0)
		{
			flag=1;
			printf("用户已存在\n");
			return -2;
		}
	}
    printf("请输入密码:");
	scanf("%s",passwd);
	if(flag==0)
	{
		fprintf(fp,"%s %s",name,passwd);
		fputc(10,fp);
		printf("用户创建成功\n");
	}
	fclose(fp);
	return 0;
}

1. fgetc计算一个文件的大小
#include <stdio.h>
int main(int argc, const char *argv[])
{
	FILE *fp=fopen(argv[1],"r");
	if(fp==NULL)
	{
		perror("");
		return -1;
	}
	char ch;
	int byte=0;
	while((ch=fgetc(fp))!=EOF)
	{
		byte++;
	}
	printf("byte=%d\n",byte);
	fclose(fp);
	return 0;
}

2. 计算一个文件有几行;提示:计算一个文件有几个'\n'
#include <stdio.h>
int main(int argc, const char *argv[])
{
	FILE *fp=fopen(argv[1],"r");
	char ch;
	if(fp==NULL)
	{
		perror("");
	}
	int line=0;
	while((ch=fgetc(fp))!=EOF)
	{
		if(ch=='\n')
		{
			line++;
		}
	}
	printf("line=%d\n",line);
	fclose(fp);
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值