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;
}