c - 如何在c中使用fread逐行读取
问题描述
我的 fread 有问题,我的程序只读取文件中的第一行。我使用结构将数据保存到文件并临时获取数据以检查状态。如果使用 fgets 我不知道如何将结构中的每个数据带到临时结构中进行检查
#include<stdio.h>
#include<string.h>
struct data
{
char uname[30], pass[30], nama[30], alamat[30], nomer[30];
} real,temp;
int userchecker(FILE *ptr);
void regist(FILE *ptr);
int main(){
FILE *ptr;
printf("\n\nSelamat Datang Di D'Medicine");
printf("\n\n============================\n");
printf("Silahkan ");
printf("Username :");
scanf(" %[^\n]", &real.uname);
if(userchecker(ptr) == 0){
printf("====registrasi akun======\n");
printf("Nama :");
scanf(" %[^\n]", &real.nama);
printf("pass :");
scanf(" %[^\n]", &real.pass);
printf("Alamat :");
scanf(" %[^\n]", &real.alamat);
printf("Nomer Telepon :");
scanf(" %[^\n]", &real.nomer);
regist(ptr);
}else{
printf("sudah terdaftar\n");
printf("%s %s\n", temp.uname,temp.nama);
}
return 0;
}
int userchecker(FILE *ptr){
int flag = 0;
ptr = fopen("data.bin","rb");
if(ptr == NULL){
printf("file error\n");
flag = 1;
}else{
while(fread(&temp, sizeof(struct data),1,ptr)){
if(strcmp(real.uname,temp.uname)==0){
flag = 0;
break;
}
else{
flag = 1;
}
}
if(flag == 1){
printf("data tidak ditemukan\n");
return 0;
}else{
return 1;
}
fclose(ptr);
}
}
void regist(FILE *ptr){
ptr = fopen("data.bin","ab");
fwrite(&real, sizeof(struct data), 1, ptr);
fwrite("\n", sizeof(char), 1, ptr);
printf("data registed");
fclose(ptr);
}
解决方案
推荐阅读
- python - 创建具有不同python版本的conda环境时,python版本不会改变
- ubuntu - 从控制台下载 zip 文件并插入目录
- python - 加载特定的训练模型
- swift - 如何快速正确地从图像中提取数字数组?
- python - 程序结束后如何删除按钮?
- javascript - ISO-8601 中的新日期抛出“无效日期”
- c# - Heroku 在尝试发布 .NET Core 应用程序时不会检测到预发布的不同包来源的 NuGet 库
- mysql - 为什么局部变量不保存价值?
- multithreading - 为什么在内核空间中实现的线程很慢?
- angular - 如何使用 FormControl.valueChanges 格式化输入值