1.作业1:使用分文件编译,实现注册登录界面,使用已经学过的fgets,fscanf,fpritnf函数。
main:
#include <myhead.h>
#include "login.h"
int main() {
int choice;
while(1)
{
printf("1. 注册\n");
printf("2. 登录\n");
printf("3. 退出\n");
printf("请输入序号: ");
scanf("%d", &choice);
getchar();
switch (choice)
{
case 1:
regist();
break;
case 2:
login();
break;
case 3:
exit(EXIT_SUCCESS);
break;
default:
printf("输入错误,请重新输入!\n");
break;
}
}
return 0;
}
login.c:
#include <myhead.h>
#include "login.h"
void regist() {
char username[20];
char password[20];
printf("输入注册账号: ");
fgets(username, 20, stdin);
printf("输入注册密码 ");
fgets(password, 20, stdin);
FILE *fp = fopen("users.txt", "w");
if (fp == NULL) {
perror("fopen");
return;
}
fprintf(fp, "%s %s\n", username, password);
fclose(fp);
printf("注册成功!\n");
}
void login() {
char username[20];
char password[20];
char file_username[20];
char file_password[20];
printf("输入账号: ");
fgets(username, 20, stdin);
username[strlen(username)-1] = '\0';
printf("输入密码: ");
fgets(password, 20, stdin);
password[strlen(password)-1] = '\0';
FILE *fp1 = fopen("users.txt", "r");
if (fp1 == NULL) {
perror("fopen");
return;
}
int flag = 0;
while (fscanf(fp1, "%s %s", file_username, file_password) != EOF) {
if (strcmp(username, file_username) == 0 && strcmp(password, file_password) == 0) {
flag = 1;
break;
}
}
fclose(fp1);
if (flag) {
printf("登录成功!\n");
} else {
printf("登录失败\n");
}
}
login.h:
#ifndef USER_H
#define USER_H
void regist();
void login();
#endif // USER_H
作业2:使用fread和fwrite拷贝文件。
#include <myhead.h>
int main() {
FILE *fp1, *fp2;
char buffer[1024];
size_t byte;
fp1=fopen("1.txt", "w");
if (fp1 == NULL) {
perror("fopen");
return -1;
}
fprintf(fp1, "%s", "123456");
fclose(fp1);
fp1 = fopen("1.txt", "r");
if (fp1 == NULL) {
perror("fopen");
return -1;
}
fp2 = fopen("2.txt", "w");
if (fp2 == NULL) {
perror("fopen");
fclose(fp1);
return -1;
}
while ((byte = fread(buffer, 1, 1024, fp1)) > 0) {
fwrite(buffer, 1, byte, fp2);
}
fclose(fp1);
fclose(fp2);
printf("复制成功!\n");
return 0;
}