读写文件的问题
下面代码怎么没法写入文本呢,请帮忙看看#include<stdio.h>
#include<string.h>
#define M 1
struct denglu
{
char name;
char mima;
}person;
int main()
{
int m=0,i,c=0;
char s;
char zhanghao;
char zifu;
printf("是否已注册?(y/n)\n");
scanf("%c",&s);
getchar();
FILE *fp;
if((fp=fopen("D:\\log.bin","ab+"))==NULL)
{
printf("file open error\n");
return 0;
}
while(!feof(fp))
{
if(fread(&person,sizeof(struct denglu),1,fp)==1)
{
m++;
}
}
fclose(fp);
if((fp=fopen("D:\\log.bin","ab+"))==NULL)
{
printf("file open error\n");
return 0;
}
printf("m is %d",m);
if(s=='N'||s=='n')
{
if(m==10)
{
printf("名额已满,您无注册机会\n");
}
printf("请设置不超过10个字符的账号\n");
gets(person.name);
printf("账号保存成功!\n");
printf("请设置不超过10个字符的密码\n");
gets(person.mima);
printf("密码保存成功!\n");
//printf("person %d is %s,%s",m,person.name,person.mima);
for(i=0;i<m;i++)
{
if(fwrite(&person,sizeof(struct denglu),1,fp)!=1)
{
printf("write error\n");
}
else
{
printf("%s\n",person.name);
printf("%s\n",person.mima);
}
}
}
fclose(fp);
return 0;
} #include<stdio.h>
#include<string.h>
#define M 100
struct denglu
{
char name ;
char mima ;
} person ;
int main()
{
FILE * fp ;
int k , m = 0 , i ;
char s , name , mima ;
if((fp = fopen("D:\\log.bin","rb")) != NULL) {
fread(& person , sizeof(struct denglu) , 1 , fp) ;
while(! feof(fp)) {
m++ ;
fread(& person , sizeof(struct denglu) , 1 , fp) ;
}
fclose(fp) ;
}
printf("当前在册用户数为 %d \n" , m) ;
if(m < M) {
printf("输入用户名 : ") ;
scanf("%s" , name) ;
for(i = 0 ; i < m ; i ++) if(! strcmp(name , person . name)) break ;
k = m ;
if(i == m) {
printf("用户不存在!\n") ;
printf("现在创建(y / n) ? : ") ;
} else {
printf("用户已经存在。\n") ;
printf("更新密码(y / n) ? : ") ;
}
fflush(stdin) ;
s = getchar() ;
if(s == 'Y' || s == 'y') {
printf("输入密码 : ") ;
scanf("%s" , mima) ;
strcpy(person . name , name) ;
strcpy(person . mima , mima) ;
if(i == m) m ++ ;
if((fp = fopen("D:\\log.bin","wb")) != NULL) {
fwrite(person , sizeof(struct denglu) , m , fp) ;
fclose(fp) ;
if(i == k) printf("用户创建成功。") ;
else printf("密码修改成功。") ;
} else {
fprintf(stderr , "\n") ;
fprintf(stderr , "用户数据文件无法创建。\n") ;
fprintf(stderr , "\n") ;
}
}
} else {
printf("\n") ;
printf("用户数已满。\n") ;
printf("\n") ;
}
} jackz007 发表于 2021-1-21 23:30
请教:
1、strcpy(person . name , name) 和 person.name = name 这2种赋值方法有啥区别
2、fwrite(person , sizeof(struct denglu) , m , fp)这里的person为什么不用加&person 1、字符串赋值不可以用等号,这应该是常识了。
2、person 是结构数组名称,本身就是内存地址,是整个数组在内存中的起始地址。
页:
[1]