1011 文件位置函数和缓冲区

 

写了十个字节文件指针已经偏移了再读的话已经是后面的十个字节了

 

 

 

 

 

 

 

 判断文件大小

#include<stdio.h>
#include<stdlib.h>

int main(int argc,char **argv)
{
    FILE *fp;
    int count=0;
    if(argc<2)
    {

        fprintf(stderr,"usage...\n");
        exit(1);
    }
    fp=fopen(argv[1],"r");
    if(fp==NULL)
    {
        perror("fopen()");
        exit(1);

    }
    fseek(fp,0,SEEK_END);//移动到文件尾部
   
    printf("%ld\n",ftell(fp));
}
 

 

 

 

 

    //rewind  没有返回值 也不会出错
    //void fseek(stream,0l,SEEK_SET);
    //如果是long最好将数字常量化
    //rewind 相当于上面一句的封装
 
 
 
 
空洞文件
比如下载文件  一开始是源文件的大小
初始化有很多0字符
 
 
 
 
 
fflush
int main()
{

printf("before");//其实这里第一句都不会打印
//直接卡在while
//因为刷新缓冲区是会当读到换行付号 读满一行才会刷新
//因此默认打印一行都要加上换行符
//所以可以加上这一行强制刷新  fflush(stdout)   fflush(NULL);
 
while(1);
printf("agter");
exit(0);

}
 

问题 如果需要开辟一块动态内存

malloc  返回一个地址

判断如果空间不够了realloc

EXAMPLES
#define _GNU_SOURCE  //没有宏值  需要加在makefile中  -D_GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>

int
main(int argc, char *argv[])
{
FILE *stream;
char *line = NULL;
size_t len = 0;
ssize_t nread;

if (argc != 2) {
fprintf(stderr, "Usage: %s <file>\n", argv[0]);
exit(EXIT_FAILURE);
}

posted @ 2021-10-12 06:41  张喆坤  阅读(37)  评论(0编辑  收藏  举报