今天刷题的时候,有一个字符串的题一直出现乱码,研究了半天才发现,不同的赋值方法使字符串长度不同。
strlen()这个函数的功能是返回字符串的长度,下面用代码说明。
#include<iostream>
#include<string.h>
#include<stdlib.h>
using namespace std;
int main()
{
char a[1010];
char b[1010] = "abc";
char c[1010];
cin >> a; // 假设输入abcdef
c[0] = 'a';
cout << "a.length:" << strlen(a) << endl;
cout << "b.length:" << strlen(b) << endl;
cout << "c.length:" << strlen(c) << endl;
system("pause");
return 0;
}
猜一下字符串的长度分别是多少?
a.length:3
b.length:3
c.length:1023
请按任意键继续. . .
就是说,第一种和第二种赋值方法,strlen测出的都是字符串实际长度,而第三种赋值方法,相当于把开辟的空间全部激活,但是结果是1023而不是1009的原因还未找到。
总之,当用到第三种赋值方法时,创建一个变量index,像操纵栈顶指针一样记录字符串长度就ok了。