linux标准i o实例,linux 标准 I/O

系统分配的3个流:  标准输入 stdin; 标准输出  stdout   ; 标准错误  stderr ;(标准I/O预定义3个流,当进程创建或者开启的时候,系统就会先分配三个流指针)

文本流:  通过 FILE 创建一个流指针实现对文本流的操作

1. 流的打开:FILE * fopen(const *char path, const char *mode)  ; 参数,文件的路径和打开的模式(只读,只写等) , 返回这个文本的指针,可对

这个文本流进行读写操作等。

2. 流的关闭:int fclose( FILE *stream ); 参数要关闭的文本流,失败返回EOF(-1) ,成功返回 0

3. 向流中写入一个字符 : int fputc(int c, FILE *stream);   参数要输出的字符,和输出到那个流中(可以是标准流,文本流), 失败返回EOF, 成功返回 写入的字符

4. 从流中读取一个字符: int fgetc(FILE *stream);  参数 在那个流中读取字符,返回读取的字符(ascii对应)

6. 从流中读取多个字符: char *fgets(char *s, int size, FILE *stream);  参数 s 存放读取的数据, size 读取多少个字符,stream 从哪个流读取的流指针;成功返回 s,失败返回NULL

7. 向流中写入多个字符:int fputs(const char *s, FILE *stream); 参数,把 s 中的数据写入到stream指向的流中,成功返回1 失败返回-1

例子1:从终端输入获取字符,然后写到文本中

#include

int main(int argc, const char *argv[])

{

char buf[1024] = {0}; //定义缓冲区,从终端获取数据,往文本流中写入

#if 0

//向终端输出

puts("HHHHHHHH");

fputs("HAHGAGAGAGAGA\n",stdout); //输出到标准输出流中,(输出到终端上)

#endif

//终端获取数据放到 buf 中,一会把 buf 中的内容写到文本流中

char ch=0;

int i=0;

while((ch=getchar())!='q' && i<1024) //终端输入遇到 q 或者 到达最大缓存,结束输入

{

buf[i++] = ch;

}

#if 1

//向文本中输出

FILE *fp = NULL;

if((fp = fopen(argv[1],"w")) == NULL) //参数 "w" 表示写入,每次打开文件先清空文件,再写入数据

{

perror("open fail:");//标准错误输出

return -1;

}

//把 buf 中的数据写入到 fp 指向文本流中

fputs(buf,fp);//把数据写入文本流中, fgets 不带换行符输入到文本流中

fclose(fp); //关闭文本流

#endif

return 0;

}

测试结果:

ebacf62c51040ad6e3f7ba9711c97066.png

例子2,从文本流中读取数据

#include

int main(int argc, const char *argv[])

{

char buf[1024] = {0};//定义 存放读取的数据

FILE *fp = NULL;

if((fp=fopen(argv[1],"r")) ==NULL)

{

perror("open fail:");

}

// fgets 只读取一行的指定个数的内容//循环把文本流中的数据读完

while((fgets(buf,5,fp)) != NULL)//读取全部数据

{

printf("%s",buf); //打印读取到的数据

}

fclose(fp);

return 0;

}

611189093de025d981e72d41b5999a8b.png

标签:读取,int,流中,char,标准,FILE,linux,文本

来源: https://www.cnblogs.com/electronic/p/10907403.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值