看以下这份代码:
#include<bits/stdc++.h>
using namespace std;
char s[2][9];
int main()
{
cin>>s[0]>>s[1];
cout<<strlen(s[0])<<" "<<strlen(s[1]);
return 0;
}
这是一份标准的字符串读入代码。理论上来说,如果我们下标从 0 开始储存,它可以读入两个长度为 9 的字符串。
可实际上,当输入为:123456789 123456789 时,这份代码会出现数组越界,输出为 18 9。
经检验,问题出在空格符上,因为当我只输入一个字符串时,就不会出现这样的问题。
可实际上,字符串读入并不会读入空格符,那么问题究竟出在哪呢?