基于文件的程序设计
2023-12-29 06:12:49
读写文件
任务要求
设计程序,实现创建文件/data/workspace/myshixun/19-1/pwd.txt,将用户名和密码存储至该文件中。要求: (1)包含3个及以上用户信息; (2)用户信息的结构体类型如下:
struct User
{
char name[20];
char password[20];
};
typedef struct User stUser;
请根据提示信息在右侧编辑器的Begin-End
区域内补充代码,,并调试完成相应功能。
输入要求
第一行输入一个正整数n(1<=n<=100)
,表示用户的数量。 第二行至第n+1
行,每行依次输入用户姓名name(1<=len(name)<=20)
以及用户密码password(1<=len(password)<=20)
。
输出要求
将输入的用户信息存储至文件pwd.txt中,并将信息读取出来按照用户名字典序从小到大的要求显示在屏幕上。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct User
{
char name[20];
char password[20];
};
typedef struct User stUser;
void saveToFile(int n,char *filename); //将数据保存至文件中
void loadUserInfor(stUser userInfor[], char *filename); //读取文件
void sort(stUser userInfor[], int len);
void print(stUser userInfor[], int len);
int main()
{
int n;
char *filename = "/data/workspace/myshixun/19-1/pwd.txt";
printf("输入用户个数:\n");
scanf("%d", &n);
saveToFile(n,filename);
stUser userInfor[100];
loadUserInfor(userInfor, filename);
sort(userInfor, n);
print(userInfor, n);
return 0;
}
void saveToFile(int n,char *filename) //定义保存文件函数
{
FILE *fp = fopen(filename, "wb");
if (fp == NULL) {
printf("打开文件失败!");
exit(1);
}
printf("执行写文件操作!\n");
/************Begin**********/
for (int i = 0; i < n; i++) {
stUser user;
scanf("%s %s", user.name, user.password);
fwrite(&user, sizeof(stUser), 1, fp);
}
fclose(fp);
/********** End **********/
}
void loadUserInfor(stUser userInfor[], char *filename) //定义读文件函数
{
FILE *fp = fopen(filename, "rb");
if (fp == NULL) {
printf("打开文件失败!");
exit(1);
}
/************Begin**********/
for (int i = 0; i < 100; i++) {
if (fread(&userInfor[i], sizeof(stUser), 1, fp) != 1) {
break;
}
}
fclose(fp);
/********** End **********/
}
void sort(stUser userInfor[], int len)
{
/************Begin**********/
for (int i = 0; i < len - 1; i++) {
for (int j = 0; j < len - i - 1; j++) {
if (strcmp(userInfor[j].name, userInfor[j + 1].name) > 0) {
stUser temp = userInfor[j];
userInfor[j] = userInfor[j + 1];
userInfor[j + 1] = temp;
}
}
}
/********** End **********/
}
void print(stUser userInfor[], int len)
{
for (int i = 0; i < len; i++) {
printf("UserName=%s,UserPassword=%s\n", userInfor[i].name, userInfor[i].password);
}
}
文章来源:https://blog.csdn.net/Fan_041114/article/details/135273521
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!