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