读书人

百思不得其解 关于strlen,该怎么解决

发布时间: 2013-07-09 09:50:47 作者: rapoo

百思不得其解 关于strlen

#include <iostream>
using namespace std;
#include <cstdio>
#include <cstring>
int main()
{
char s[]={"\\141\141abc\t"};
cout<<strlen(s)<<endl;
}



为什么上面的这个输出为9,
下面的这个输出为10啊?
#include <iostream>
using namespace std;
#include <cstdio>
#include <cstring>
int main()
{
char s[]={"\\141\109abc\t"};
cout<<strlen(s)<<endl;
}
strlen C
[解决办法]
转义字符“\ooo"要求三位八进制数字,被解释为内码值为该8进制数字的字符

"\141"被解释为8进制数字141所表示的字符

"\109"中,9不是八进制数字,所以被解释为"\10"和字符'9',成了两个字符。
[解决办法]
9 超出 8 进制范围了

读书人网 >C++

热点推荐