话说今天考了C语言的试,各种用文件读写神马的。哥都忘了神马文件读写了。于是前一小时各种想,不过这一小时做的最多是ctrl + alt + delete结束vc++6.0 尼玛我以无力吐槽这神马考试,大头机,vc编译两次就完蛋必须结束进程才能启动。这是考试吗,机房还一股臭脚丫子味,多少年不打扫了。这是练习ctrl + alt + delete命令吧。 哥实在没办法了全部用freopen写的,管他对不对的。哎....伤不起啊。回来还晕的我吐了,晕车的滋味要死啊。
回来就看了看这些简单的函数,话说哥想对了,可是考试的时候怎么数据就是读不出来呢,无语。。。
#include <stdio.h>
#include <string.h>
typedef struct node
{
int id;
char name[22];
char sex[2];
}node;
node stu[107],st[107];
void main()
{
int i;
char str[107];
char ch;
FILE* fp = fopen("d.txt","w+");
//FILE* fp = fopen("d.dat","r");
if (fp == NULL)
{
printf("无法打开");
}
else
{
// fputc(ch,fp) ch = fgetc(fp) 用法
/*
scanf("%c",&ch);
while (ch != '\n')
{
fputc(ch,fp);
scanf("%c",&ch);
}
rewind(fp);//使文件内部指针指向文件开头
fseek(fp,2,0);//相对于0偏移2个位置以后的内容
ch = fgetc(fp);
while (ch != EOF)
{
printf(">>>>%c",ch);
ch = fgetc(fp);
}
*/
//fputs(str,fp) fgets(str,n,fp)的用法
/*
scanf("%s",str);
fputs(str,fp);
rewind(fp);
fgets(str,5,fp);//从文件里读出4个字符
printf("%s\n",str);
*/
/*
fread(pBuffer,size,count,pFile);
fwrite(pBuffer,size,count,pFile);
要读写一个数据块的话,无论是读还是写,都需要指定一个起始地址,
读的话从这个起始地址读,写的话从这个起始地址写,上面函数定义中
的第一个参数pBuffer就是用于指定这个起始地址,size读写的字节数,
count则指定读写多少个size大小的数据,pFile是文件结构指针。
*/
/*
for (i = 0; i < 3; ++i)
{
scanf("%d %s %s",&stu[i].id,stu[i].name,stu[i].sex);
fwrite(&stu[i],sizeof(node),1,fp);
printf("\n");
}
rewind(fp);
for (i = 0; i < 3; ++i)
{
fread(&st[i],sizeof(node),1,fp);
printf("%d %s %s\n",st[i].id,st[i].name,st[i].sex);
}
*/
/*
fscanf(fp,"%d%s",&i,s);
fprintf(fp,"%d%c",j,ch);
*/
for (i = 0; i < 3; ++i)
{
scanf("%d%s%s",&stu[i].id,stu[i].name,stu[i].sex);
fprintf(fp,"%d %s %s\n",stu[i].id,stu[i].name,stu[i].sex);
}
rewind(fp);
for (i = 0; i < 3; ++i)
{
fscanf(fp,"%d %s %s",&st[i].id,st[i].name,st[i].sex);
}
for (i = 0; i < 3; ++i)
{
printf("%d %s %s\n",st[i].id,st[i].name,st[i].sex);
}
fclose(fp);
}
}