校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > 数据结构 > 基本性质
题目

设语句定义char a[ 80 ]= " 0123\0789 "; ,则sizeof(a)和strlen(a)的值分别为()

A.80和9

B.80和7

C.80和5

D.80和6

解答

正确答案是 A

\078是一个八进制数,\0不可能是空字符,后接三位数表示一个八进制,但是本题\0接后三位的第三位是8,所以本题的全部字符分别为:

0、1、2、3、\07、8、9
sizeof(a),strlen(a)的指分别为80,7所以答案选B

但是如果本题是"0123\0779"的话,本题的全部字符为0、1、2、3、\077、9,

sizeof(a),strlen(a)的指分别为80,6
C 8条回复 评论
假期

Aaaaaa

发表于 2021-03-05 23:55:54
0 0
囖1317

还有这操作终究还是太年轻了

发表于 2021-03-05 11:21:18
0 0
小洁癖

前后有两个空格,\后面为0789,因为八进制不可能有8,所以转移字符为\07,如果把8改成7,那么就应该是\077。如果把7改成8,那么转移字符就是\0,这才是结束符。

发表于 2018-10-13 11:57:09
0 0
小洁癖

" 0123\0789 " 7
 " 0123\0123 " 6
 " 0123\0889 " 4
第一次见这种问题,真实

发表于 2018-10-13 11:57:03
0 0
猪猪猪

C语言中\0结束符 不算在strlen范围内

发表于 2018-10-13 11:56:56
0 0
小小小可乐


#include<iostream>
using namespace std;
int main()
{
char a[80]="0123\0789";
cout<< sizeof(a)<<endl;
cout<< strlen(a)<<endl;
system("pause");

}

运行之后结果为B

发表于 2018-10-13 11:56:49
0 0
王王王

这题选A,80和9,你们没看到有空格吗?首尾各一个空格


发表于 2018-10-13 11:56:39
0 0
企鹅哥哥

八进制数的转义

发表于 2018-10-13 11:56:32
0 0