rt,刚学的时候我就发现一个 scanf 读入字符的一个很奇怪的问题。一般来说,读入字符应该是 scanf("%c",&c); 这样来读入。但是这样读入很多时候会出现一行读入了一行没读入下一行又读入了的问题。
举个例子,这个代码读入以下数据,输出来是正常的。
5 5
23333
11451
kkksc
chen_
pinkr
#include<bits/stdc++.h>
using namespace std;
char a[105][105];
int n,m;
int main()
{
cin >> n >> m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin >> a[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cout << a[i][j];
}
cout << endl;
}
return 0;
}
但是这个代码就会输出很奇怪的东西。
#include<bits/stdc++.h>
using namespace std;
char a[105][105];
int n,m;
int main()
{
cin >> n >> m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
scanf("%c",&a[i][j]);
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cout << a[i][j];
}
cout << endl;
}
return 0;
}
但是在 %c 之前加上一个 \n 就好了。
现在的问题是,比赛时直接 scanf 会这样吗,前面要加 \n 吗?
感谢大佬的回答,谢谢。