C 文件操作回顾

可以在程序运行时分配更多的内存,主要工具是malloc(),它接受一个参数,所需字节数,然后malloc()找到可用内存中一个大小合适的快。内存是匿名的。也就是说malloc()分配了内存,单没有为它指定名字。然而,它却可以返回那块内存第一个字节的地址

fopen() 函数返回一个文件指针(file pointer),其他I/O函数用这个指针来指定该文件。文件指针是一种只想FILE的指针;FILE是stdio.h中定义的一种派生类型。指针fp并不止像实际的文件,而是只想一个关于文件信息的数据包,其中包括文件I/O的使用缓冲区信息。 因为标准库中的I/O函数使用缓冲区,所以他们需要知道缓冲区的位置缓冲区的当前缓冲能力以及所使用文件

C 中文件操作我一直都不太会,今天练习一下

#include 
#define N 5
typedef struct student
{
    long sno;
    char name[10];
    float score[3];
}STU;

void fun(char  *filename)
{ FILE  *fp;      int  i, j;
    STU  s[N], t;  
    fp = fopen(filename, "rb");
    fread(s, sizeof(STU), N, fp);
    fclose(fp);
    for (i=0; i s[j].sno)
            {  t = s[i];  s[i] = s[j];  s[j] = t;  }
    fp = fopen(filename, "wb");
    fwrite(s, sizeof(STU), N, fp);
    fclose(fp);
}

int main(int argc, const char * argv[])
{
   
    /*printf("Hello, World!\n");
    float a = 12.;
    int b = 23;
    printf ("%d\n%f", b, a);
    printf("%d, %d, %d\n", 8 ,0121, 0x18);*/

    STU  t[N]={ {10005,"ZhangSan", 95, 80, 88}, {10003,"LiSi", 85, 70, 78},
        {10002,"CaoKai", 75, 60, 88}, {10004,"FangFang", 90, 82, 87},
        {10001,"MaChao", 91, 92, 77}}, ss[N];
    
    int i, j; FILE * fp;
    fp = fopen("student.dat", "wb");
    fwrite(t, sizeof(STU), 5, fp);
    fclose(fp);
    
    printf ("\n\n The Original Data :\n\n");
    
    for (j = 0; j < N; j++)
    {
        printf ("\n No : %ld Name : %-8s  Scores: ",t[j].sno, t[j].name);
        for (i = 0; i < 3; i++)
            printf("%6.2f", t[j].score[i]);
        printf("\n");
    }
    
    fun ("student.dat");
    printf("\n\n The Data After Sorting: \n\n");
    
    fp = fopen("student.dat", "rb");
    fread(ss, sizeof(STU), 5, fp);
    fclose(fp);
    
    for (j=0; j
C 文件操作回顾_第1张图片

写好之后问题又来了,文件写到哪里去了呢
我不好一个个文件夹 去找
打开终端输入

find / student.dat

在磁盘查找吧,这种效率太低,千万别学我

C 文件操作回顾_第2张图片

把 / 换成那个目录


顺着目录去找这个文件就好

文件:我在这呢!

你可能感兴趣的:(C 文件操作回顾)