单选题
1、第54题 (1.0分) 题号:740 若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作, 下面符合此要求的函数调用是()。
A
fopen(”A:\user\abc.txt”,”r”)
B
fopen(”A:\\user\\abc.txt”,”r+”)
C
fopen(”A:\user\abc.txt”,”rb”)
D
fopen(”A:\\user\\abc.txt”,”w”)
答案解析
正确答案:B
解析:
这道题考查的是 C 语言中 `fopen` 函数的两个关键知识点:**文件路径字符串的转义字符处理**以及**文件打开模式的选择**。
### 1. 文件路径中的转义字符
在 C 语言的字符串常量中,反斜杠 `\` 是转义字符的前导符。例如,`\n` 代表换行,`\t` 代表制表符。
因此,如果要在字符串中表示一个实际的反斜杠(即 Windows 系统路径中的目录分隔符),必须使用双反斜杠 `\\` 进行转义。
* 选项 A 和 C 中的 `"A:\user\abc.txt"`:编译器会将 `\u` 和 `\a` 尝试解析为转义序列(或者在某些编译器下报错/警告),这无法正确表示路径 `A:\user\abc.txt`。
* 选项 B 和 D 中的 `"A:\\user\\abc.txt"`:`\\` 会被正确解析为一个普通的反斜杠 `\`,从而构成正确的文件路径 `A:\user\abc.txt`。
**结论**:排除选项 A 和 C。
### 2. 文件打开模式
题目要求对文件进行 **“读、写操作”**。我们需要查看 `fopen` 的模式参数:
* `"r"` (read):只读方式打开。如果文件不存在则打开失败。**不符合**“写”的要求。
* `"w"` (write):只写方式打开。如果文件存在则清空内容,如果不存在则创建。**不符合**“读”的要求,且会破坏原有数据。
* `"rb"` (read binary):以二进制只读方式打开。**不符合**“文本文件”及“写”的要求。
* `"r+"`:以读写方式打开。文件必须存在,指针位于文件开头,可以进行读取和写入操作。**符合**题目要求。
* 其他常见模式补充:
* `"w+"`:以读写方式打开,但会先清空文件。
* `"a+"`:以追加读写方式打开。
**对比剩余选项**:
* **选项 B**:`fopen("A:\\user\\abc.txt", "r+")`
* 路径:`\\` 正确转义。
* 模式:`"r+"` 支持读写。
* **符合题意**。
* **选项 D**:`fopen("A:\\user\\abc.txt", "w")`
* 路径:`\\` 正确转义。
* 模式:`"w"` 仅支持写入,且会清空文件,不支持读取。
* **不符合题意**。
### 最终结论
只有选项 B 同时满足了路径格式正确(使用 `\\` 转义)和操作模式正确(使用 `r+` 进行读写)这两个条件。
故正确答案为 **B**。
题目纠错
c语言选择判断题库
相关题目
单选题
1、第205题 (1.0分) 题号:127 下列程序的输出结果是()。
单选题
1、第204题 (1.0分) 题号:590 若变量a与i已正确定义,且i已正确赋值,合法的语句是()。
单选题
1、第203题 (1.0分) 题号:536 enum a {sum=9,mon=-1,tue}; 定义了()。
单选题
1、第202题 (1.0分) 题号:527 全局变量的定义不可能在()。
单选题
1、第201题 (1.0分) 题号:95 下列变量说明语句中,正确的是()。
单选题
1、第200题 (1.0分) 题号:88 下列字符序列中,可用作C标识符的一组字符序列是()。
单选题
1、第199题 (1.0分) 题号:598 下列四组选项中,均不是C语言关键字的选项是()。
单选题
1、第198题 (1.0分) 题号:530 C程序中的宏展开是在()。
单选题
1、第197题 (1.0分) 题号:554 从键盘上输入某字符串时,不可使用的函数是()。
单选题
1、第196题 (1.0分) 题号:519 int a[10]; 给数组a的所有元素分别赋值为1、2、3、……的语句是()。
