scanf()
函数的异常行为。
#include<bits/stdc++.h>
using namespace std;
char c[100][100];
int main()
{
for(int i=1;i<=10;++i) scanf("%s",c[i]+1);
}
我的问题是,由于我们将c
声明为2
维,array
,scanf
如何只接受一维输入,而没有任何编译{{1} }?
第二个参数是否有一些默认值?
答案 0 :(得分:1)
c[i]
与&c[i][0]
相同。
c[i] + 1
与&c[i][1]
相同。
因此,请使用
scanf("%s", c[i]+1);
从句法的观点来看是有效的。
但是,请记住,如果输入太大而无法适合给定位置,则会遇到访问数组超出有效范围的问题。最好使用
scanf("%98s", c[i]+1);
c[i]+1
处有99个字符。您需要为终止的空字符留出空间。因此,使用%98s
。