文件IO测试题

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;
​
​
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值