c语言中进行文件读写的函数是?
C语言对文件进行读取之前需要先打开文件,然后再进行读写,读写完之后关闭文件。 可以使用两组函数实现:
一、C语言库函数 打开文件:fopen 读写(一般对应成对使用): fgetc—fputcfgets—fputsfread—fwrite 关闭文件:fclose
二、Linux系统函数 打开文件:open 读写(一般对应成对使用):read—write 关闭文件:close
c语言中read函数的用法?
函数原型定义:
ssize_t read (int fd, void *buf, size_t count);
2/8
使用的头文件:
#include <unistd.h>
3/8
函数的返回值说明:
(1)如果成功,返回读取的字节数;
(2)如果出错,返回-1并设置errno;
(3)如果在调read函数之前已是文件末尾,则返回0
4/8
函数的参数【int fd】:
这个是文件指针
5/8
函数的参数【void *buf】:
读上来的数据保存在缓冲区buf中,同时文件的当前读写位置向后移
6/8
函数的参数【size_t count】:
是请求读取的字节数。若参数count 为0, 则read()不会有作用并返回0. 返回值为实际读取到的字节数, 如果返回0
7/8
函数的使用注意事项:
如果顺利 read()会返回实际读到的字节数, 最好能将返回值与参数count 作比较, 若返回的字节数比要求读取的字节数少, 则有可能读到了文件尾
8/8
read()函数使用的简单例子:#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>main(){ int fd, size; char s = “Linux Programmer!n”, buffer; fd = open(“/tmp/temp”, O_WRONLY|O_CREAT); write(fd, s, sizeof(s)); close(fd); fd = open(“/tmp/temp”, O_RDONLY); size = read(fd, buffer, sizeof(buffer)); close(fd); printf(“%s”, buffer);}
linux里面查看一个可执行文件使用了哪些头文件?
1)
C库这种东西,有标准,但没有官方实现,谁想自己写一个都行。当然常用的就那么几个,vc的libcmt.lib和msvcrxx.dll,linux上么,glibc吧。另外也有μclibc之类的。
2)
.h是头文件,库文件么,.lib和.a是静态库,.dll和.so是动态库。#include就是让预编译器找到某个文件(一般是头文件),把里面的内容原封不动地放到#include的位置上。你要愿意,也可以把什么都写进头文件里,对编译器来说,这相当于把一切都写进了一个源程序文件。反正写个小程序这么搞没啥问题 。
3)
就是这样的。而且其中的依赖关系越来越微妙。
4)
程序=算法+数据结构+程序设计方法+语言工具和环境
这是谭浩强说的。不过这个人的名声……
linuxC程序中如何获取shell的脚本输出呢?
你说的是Linux C程序获取shell脚本(命令)输出吧,这里简单介绍3种方式,分别是临时文件、匿名管道和popen函数,感兴趣的朋友可以尝试一下:
临时文件
这种方式最容易实现,基本思想是调用C语言标准库的system函数,运行shell命令或脚本,将输出结果重定向到一个临时文件中,然后读取临时文件,获取shell执行结果,测试代码如下,非常简单,输入参数分别为shell命令(脚本)和临时文件名,最终结果保存在临时文件中:
匿名管道
这种方式主要是管道,先pipe创建一个匿名管道,然后fork创建一个子进程,子进程运行shell命令或脚本,并将标准输出dup到匿名管道的写端,父进程再从匿名管道读端读取数据即可,测试代码如下,非常简单,子进程对应写端,父进程对应读端:
popen函数
这种方式最简单,C标准库专门提供了一个popen函数,可以非常简单的处理调用shell,基本思想创建一个管道,fork一个进程,然后执行shell,而shell的输出可以采用读取文件的方式获得,这种方式既避免了创建临时文件,又不受输出字符数的限制,推荐使用:
目前,就分享这3种Linux C程序获取shell脚本(命令)输出的方式吧,对于日常开发应用来说,完全够用了,只要你有一定的C语言基础,熟悉一下上面的代码,很快就能掌握的,网上也有相关教程和资料,介绍的非常详细,感兴趣的话,可以搜一下,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言进行补充。