- 注册功能
不能重复注册,即判断待注册用户名是否已存在
注意点:若用户名已存在,则重新输入待注册的用户名,重复上述操作至条件满足
#include<stdio.h>
#include <string.h>
//========================注册========================
int main(int argc, const char *argv[])
{
char name[20];
char passwd[20];
printf("输入待注册用户名:");
scanf("%s",name);
printf("输入待注册密码:");
scanf("%s",passwd);
FILE *fp = fopen("./test_user.txt","a+");
if(NULL == fp)
{
perror("fopen");
return -1;
}
char username[20];//判断用户名是否存在
char pd[20];
while(1)
{
if(fscanf(fp,"%s %s",username,pd)<0)
break;
if(strcmp(username,name)==0)
{
printf("用户名已存在!\n");
printf("重新输入待注册用户名:");
scanf("%s",name);
printf("重新输入待注册密码:");
scanf("%s",passwd);
fseek(fp,0L,0);
}
}
fprintf(fp,"%s %s",name,passwd);
printf("注册成功!\n");
if(fclose(fp)<0)
{
perror("fcolse");
return -1;
}
return 0;
}
- 用fgetc实现一个文件有几行,文件大小
#include<stdio.h>
int linenum(FILE *fp);
int Countchar(FILE *fp);
int main(int argc, const char *argv[])
{
FILE *fp = fopen("./1.txt","r");
if(NULL == fp)
{
perror("fopen");
return -1;
}
//printf("行数为:%d,文件大小为:%d\n",linenum(fp),Countchar(fp));
printf("行数为:%d\n",linenum(fp));
fseek(fp,0,0);
printf("文件大小为:%d\n",Countchar(fp));
if(fclose(fp)<0)
{
perror("fclose");
return -1;
}
return 0;
}
int linenum(FILE *fp)
{
int res = 0;
char c;
while(1)
{
c = fgetc(fp);
if(c == EOF)
break;
if(c=='\n'){
res++;
}
}
return res;
}
int Countchar(FILE *fp)
{
int res = 0;
char c;
while(1)
{
c = fgetc(fp);
if(c == EOF)
break;
res++;
}
return res;
}
思维导图