-
下列哪种打开文件的方式不能修改文件已有的内容 ( B )
A r+
B r
C w+
D a+ -
以读写方式打开一个已存在的标准I/O流时应指定哪个mode参数( B )
A r
B r+
C w+
D a+ -
下列哪个是不带缓存的( C )
A stdin
B stdout
C stderr
D 都不是 -
如果键盘输入为abcdef,程序如下所示,打印结果应该是(A )
char buffer[6];……
fgets(buffer, 6, stdin);
printf(“%s”, buffer);
A abcde
B abcdef
C abcdef 后出现乱码
D 段错误 -
用open( )创建新文件时,若该文件存在则可以返回错误信息的参数是 ( B )
A O_CREAT
B O_EXCL
C O_TRUNC
D O_NOCTTY -
fread()返回值的含义是( B )
A 读取的字节数
B 读取的对象数
C 缓冲区的首地址
D 0 -
指出静态库和共享库的区别(使用方法,对程序的影响)
静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库,因此体积较大。
动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在,因此代码体积较小。 -
标准IO和文件IO的区别
标准IO(库函数):带缓存的IO:高级IO,通过库函数的方式对文件进行操作,数据被暂时存储到缓存区中,直到满足一定条件时,才会真正写入磁盘
优点:及时可以减少对磁盘的访问次数,有利于保护磁盘
缺点:数据不会实时写入,可能会导致数据丢失
文件IO(系统调用):无缓存文件系统(低级磁盘IO), 通过系统调用的方式对文件进行操作,没有用户缓存区,数据实时写入磁盘
优点:数据实时写入磁盘
缺点:增加对磁盘的访问次数,不有利于保护磁盘 -
用文件IO分别实现标准IO中的(r, r+, w, w+, a, a+),文件名由argv[1]传入程序.
r: open(argv[1],O_RDONLY);
r+: open (argv[1],O_RDWR);
w: open(argv[1],O_WRONLY | O_CREAT | O_TRUNC,0666);
w+: open(argv[1],O_RDWR | O_CREAT | O_TRUNC,0666);
a: open(argv[1],O_WRONLY | O_CREAT | O_APPEND,0666);
a+: open(argv[1],O_RDWR | O_CREAT | O_APPEND,0666); -
用文件IO分别实现标准IO中的(r, r+, w, w+, a, a+),文件名由argv[1]传入程序.(O_RDONLY, O_WRONLY, O_RDWR, O_CREAT, O_TRUNC, O_APPEND)打开一个文件,并读取从第100字节开始的50字节数据。
#define N 1024 int main(int argc, const char *argv[a]) { int fd; char buf[N] = {0}; if(argc < 2) { printf("Input Error %s <file>",argv[0]); return -1; } if( (fd = open(argv[1], O_RDONLY)) == -1 ) { perror("open"); return -1; } lseek(fd, 100, SEEK_SET); if(read(fd, buf, 50) !=50) { perror("read"); return -1; } printf(" %s\n",buf); return 0; }