1、我编写了test-4-10fwrite.c和test-4-10fread.c如下:
test-4-10fwrite.c:
#include
#include
#define nmemb 3
struct test
{
char name[20];
double pay;
}s[nmemb];
int main()
{
FILE * fp;
int i;
double f;
if((fp=fopen("test-4-10file","a+"))==NULL)
{
printf("打开(创建)文件出错");
exit(0);
}
for(i=0;i
printf("请输入帐号:");
fgets(s[i].name,20,stdin);
printf("请输入余额:");
scanf("%lf",&s[i].pay);
}
fwrite(s,sizeof(struct test),nmemb,fp);
fclose(fp);
return 0;
}
/*---------------------------------------------------------------------------------------------*/
test-4-10fread.c:
#include
#define nmemb 3
struct test /*定义结构体*/
{
char name[20];
int pay;
}s[nmemb];
int main( )
{
FILE * fp; /*定义文件变量指针*/
int i;
fp = fopen("test-4-10file", "r"); /*打开文件*/
fread(s,sizeof(struct test),nmemb,fp); /*调用fread函数从文件读取块信息*/
fclose(fp); /*关闭文件流*/
for(i=0;i
return 0;
}
/*--------------------------------------------------------------------------------------------*/
2、然后编译
gcc test-4-10fwrite.c -o test-4-10fwrite
gcc test-4-10fread.c -o test-4-10fread
3、最后运行
./test-4-10fwrite /下面为运行结果/
请输入帐号:张三
请输入余额:12345
请输入帐号:请输入余额:200
请输入帐号:请输入余额:100
./test-4-10fread
帐号[0]:张三
余额[0]:0
帐号[1]:��@
余额[1]:0
帐号[2]: 余额[2]:0
/*-------------------------------------------*/
疑问: for(i=0;i
printf("请输入帐号:");
fgets(s[i].name,20,stdin);
printf("请输入余额:");
scanf("%lf",&s[i].pay);
}
为什么此循环中输入账号(即fgets(s[i].name,20,stdin))只运行了一次?
应该怎么改?
我想要的结果是:
./test-4-10fwrite
请输入帐号:张三
请输入余额:12345
请输入帐号:李四
请输入余额:200
请输入帐号:王五
请输入余额:50000
./test-4-10fread
帐号[0]:张三 余额[0]:12345
帐号[1]:李四 余额[1]:200
帐号[2]:王五 余额[2]:50000
请大?指导!大谢!!!
木子leal 于 2011-08-08 09:44:44发表:
顶起