1.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
char account[10];
char password[8];
}user;
//登录
int registe(FILE* name,user *p);
//菜单
int mume(FILE* name,user *p);
//注册
int regist(FILE* name,user *p);
//写入
int entering(user * p);
//菜单
int mume(FILE* name,user *p){
puts("1.注册\n");
puts("2.登录\n");
puts("0.退出\n");
while(1){
int sum ;
printf("需要进行的操作是:\n");
scanf("%d",&sum);
switch (sum)
{
case 1:
regist(name,p);
break;
case 2:
registe(name,p);
break;
case 0:
return -1;
}
}
}
//注册
int regist(FILE* name,user *p){
name = fopen("./name.txt","r");
entering(p);
char account[10],password[9];
while(1){
int res = fscanf(name,"%s %s",account,password);
if(0 == strcmp(p->account , account)){
printf("账号已经存在\n");
return -1;
}
if(-1 == res){
break;
}
}
fclose(name);
name = fopen("./name.txt","a+");
int ret = fprintf(name,"\n%s %s",p->account,p->password);
printf("%d",ret);
printf("录入成功\n");
fclose(name);
return 0;
}
//登录
int registe(FILE* name,user *p){
name = fopen("./name.txt","a+");
entering(p);
char account[10],password[9];
int count =0;
while(fscanf(name,"%s %s",account,password) != -1){
if(0 == strcmp(p->account , account)){
count++;
if(0 == strcmp(p->password,password)){
printf("登录成功\n");
return 0;
}else{
printf("密码错误\n");
return -1;
}
}
bzero(account,sizeof(account));
bzero(password,sizeof(password));
}
if(0 == count){
printf("没有注册账户,请注册账户\n");
}
fclose(name);
}
int entering(user * p){
printf("请输入account:");
scanf("%s",p->account);
printf("请输入password:");
scanf("%s",p->password);
}
int main(int argc,const char * argv[])
{
FILE * name = fopen("./name.txt","a+");
if(NULL == name){
perror("fopen");
return -1;
}
user *p = (user*)malloc(sizeof(user));
mume(name,p);
fclose(name);
return 0;
}
录入前
执行时
执行后
2.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc,const char * argv[])
{
FILE * ef= fopen("02_fscanf.c","r");
FILE *fe = fopen("02_fscanf.txt","w");
if(NULL == ef){
perror("fopen");
return -1;
}
if(NULL == fe){
perror("fopen");
return -1;
}
char c;
int count = 0,count1 = 0;
while(1){
c = fgetc(ef);
if(c == -1){
break;
}
printf("%c",c);
putc(c,fe);
if(c == '\n'){
count++;
}
count1++;
}
printf("文件的大小%d\n",count1);
printf("文件的行数%d\n",count+1);
fclose(ef);
return 0;
}