#include
#define N 5
struct StuInfo
{
char name[10];
int num;
int age;
}stua[N],stub[N];
int main()
{
FILE*fp;
int i;
if((fp=fopen("d:\student.txt","w+b"))==NULL)
{
printf("打开错误");
exit(0);
}
printf("\ninput\n");
for(i=0;i
for(i=0;i
rewind(fp);
for(i=0;i
printf("\n\nname number age\n");
for(i=0;i
fclose(fp);
return 0;
}
#include <stdio.h>
#define N 5
struct StuInfo
{
char name[10];
int num;
int age;
} stua[N], stub[N];
int main()
{
FILE *fp;
int i;
if ((fp = fopen("student.txt", "w+b")) == NULL)
{
printf("打开错误");
exit(0);
}
printf("\ninput\n");
for (i = 0; i < N; i = i + 1)
scanf("%s%d%d", stua[i].name, &stua[i].num, &stua[i].age);
for (i = 0; i < N; i = i + 1)
{
fprintf(fp, "%s %d %d", stua[i].name, stua[i].num, stua[i].age);
fputc('\n',fp);
}
rewind(fp);
for (i = 0; i < N; i = i + 1)
fscanf(fp, "%s%d%d\n", stub[i].name, &stub[i].num, &stub[i].age);
printf("\n\nname number age\n");
for (i = 0; i < N; i = i + 1)
printf("%s %5d %4d\n", stub[i].name, stub[i].num, stub[i].age);
fclose(fp);
return 0;
}
fprintf中的%s%d%d之间加空格,不然3个值连在一起啦。fscanf的时候没办法正确拆分的
供参考:
#include <stdio.h>
#include <stdlib.h>
#define N 5
struct StuInfo
{
char name[10];
int num;
int age;
}stua[N], stub[N];
int main()
{
FILE* fp;
int i;
if ((fp = fopen("d:\\student.txt", "w+b")) == NULL) //fopen("d:\student.txt", "w+b"))
{
printf("打开错误");
exit(0);
}
printf("input\n");
for (i = 0; i < N; i = i + 1)
scanf("%s%d%d", stua[i].name, &stua[i].num, &stua[i].age);
for (i = 0; i < N; i = i + 1)
fprintf(fp, "%s %d %d\n", stua[i].name, stua[i].num, stua[i].age);//写入文件的格式:"%s %d %d\n"
rewind(fp);
for (i = 0; i < N; i = i + 1)
fscanf(fp, "%s %d %d\n", stub[i].name, &stub[i].num, &stub[i].age);//从文件读出的格式与写入格式对应
printf("\n\nname number age\n");
for (i = 0; i < N; i = i + 1)
printf("%s %5d %d\n", stub[i].name, stub[i].num, stub[i].age);
fclose(fp);
return 0;
}