Linux高级编程——标准IO

fopen函数:

头文件:stdio.h

功能:文件已存在则直接打开,不存在则创建。

函数声明:FILE *fopen(const char *pathname, const char *mode);

参数:

pathname:文件名

mode:文件访问权限。

返回值:成功返回指向文件的指针。

失败返回NULL;

include <stdio.h>

int main()
{
	FILE *fp = fopen("1.txt","w");

	if(fp == NULL)
	{
		printf("open error");
		return 1;
	}
	 return 0
}

fputc函数:

头文件:stdio.h

功能:向文件中写入字符。

 函数声明:int putc(int c, FILE *stream)

参数:

c:要向文件中写入的字符

*stream:指向文件的指针

int:成功返回字符对应的ASCII值,失败或完成写入返回EOF;

向文件中写入hello:

#include <stdio.h>

int main()
{
	FILE *fp = fopen("1.txt","w");

	if(fp == NULL)
	{
		printf("open error");
		return 1;
	}
	
	int ret = fputc('h',fp);

	if (ret == -1)
	{
		printf("puts error");
		return 1;
	}

	fputc('e',fp);
	fputc('l',fp);
	fputc('l',fp);
	fputc('o',fp);

	fclose(fp);

	return 0;

}

fgetc函数:

头文件:stdio.h

功能:从文件中读取字符

函数声明: int fgetc(FILE *stream);

*stream:指向文件的指针

int:成功返回字符对应的ASCII值,失败或完成写入返回EOF;

用fgetc和fputc实现cp功能:

#include <stdio.h>
int main(int argc, char *argv[])
{

    if(argc<3)
    {
        printf("usage:./a.out srcfile dstfile\n");
        return 1;
    }
    FILE *src = fopen(argv[1],"r");
    FILE * dst= fopen(argv[2],"w");
    if(NULL == src || NULL == dst )
    {
        printf("fopen error\n");
        return 1;
    }
    while(1)
    {
        int c = fgetc(src);
        if(EOF== c)
        {
            break;
        }
        fputc(c,dst);
    }

    fclose(dst);
    fclose(src);
    return 0;
}

fputs函数

头文件:stdio.h

功能:向文件写入字符串

函数声明:int fputs(const char *s, FILE *stream);

参数:

s:字符串所在首地址

*stream:指向所要写入的文件的指针

int:成功返回一个非负数,失败或完成返回EOF

fgets函数:

头文件:stdio.h

功能:从文件中读取字符串

函数声明:char *fgets(char *s, int size, FILE *stream);

参数:

s:要把读到的字符串放到哪里

size:每次读取的字符串大小。

stream:要读的文件的地址

fgets从文件中读取内容,fputs把内容放入另一个文件:

#include <stdio.h>

int main(int argc,char *argv[])
{
	if(argc < 3)
	{
		printf("")
	}
	FILE *src = fopen("2.txt","r");
	FILE *dest = fopen("3.txt","w");

	if(src == NULL || dest == NULL)
	{
		printf("open error");
		return 1;
	}

	while(1)
	{
		char buf1[20] = "hello wolrd!";
		int n = fputs(buf1,dest);

		if(n == EOF)
		{
			return 1;
		}

		char buf2[1024] = {0};
		char *s = fgets(buf2,sizeof(buf1),dest);
		if(s == NULL)
		{
			return EOF;
		}
	}

	fclose(src);
	fclose(dest);
	
	return 0;
}

fwrite函数:

功能:用于写文件(既可以操作二进制文件又可以操作文本文件)

函数声明:
size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);

参数:

*ptr:要写内容的首地址

size:要写入的字节大小

nmemb:要写入数据单元的个数

stream:写入内容文件的地址

返回值:成功返回实际写入文件的数据单元的个数


struct student
{
	char name[20];
	int sno;
	char sex;
};
int main()
{
	typedef struct student STU;
	FILE *fp = fopen("2.txt","w");
	
	if(fp ==NULL)
	{
		printf("open error");
		return 1;
	}
	STU per = {"wangwang",2024,'b'};

	int n =fwrite(&per,sizeof(per),1,fp);
	if(n == EOF)
	{
		return 1;
	}

}

fread函数:

函数声明: size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

*ptr:放置所读内容的首地址

size:要读入的字节大小

nmemb:要读的数据单元的个数

stream:指向要读取的文件

返回值:成功返回实际读取文件的数据单元的个数

#include <stdio.h>
#include <string.h>

struct student
{
	char name[20];
	int sno;
	char sex;
};

int main()
{
	FILE *fp = fopen("2.txt","r");
	if(fp == NULL)
	{
		printf("open error");
		return 1;
	}

	typedef struct student PER;
	PER per;
	bzero(&per,sizeof(per));

	int n = fread(&per,sizeof(per),1,fp);
	if(n == EOF)
	{
		return 1;
	}
	printf("%s %d %c\n",per.name,per.sno,per.sex);
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值