scanf和printf读入输出字符串的探讨
1. scanf读入char字符数组(char字符串)
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| #include <bits/stdc++.h> using namespace std; int main() { int len; char str[10000]; scanf("%d",&len); for(int i=1;i<=len;i++) { scanf("%s",str); printf("%s\n",str); } return 0; }
|
2. cin.getline()整行读入char字符数组(char字符串)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| #include <bits/stdc++.h> using namespace std; int main() { int n; scanf("%d",&n); getchar(); for(int i=1;i<=n;i++) { char remp[50]; cin.getline(remp,10000); cout<<remp<<endl; printf("%s\n",remp); cout<<strlen(remp)<<endl; } return 0; }
|
3. getline()读入string字符串,并且用printf强转输出
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| #include <bits/stdc++.h> using namespace std; int main() { int n; scanf("%d",&n); getchar(); for(int i=1;i<=n;i++) { string remp; getline(cin,remp); cout<<remp<<endl; cout<<remp.length()<<endl; printf("%s\n",remp.c_str()); cout<<remp.length()<<endl; } return 0; }
|
4. scanf和printf读入输出string
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| #include <bits/stdc++.h> using namespace std; int main() { int n; scanf("%d",&n); for(int i=1;i<=n;i++) { string remp; scanf("%s",remp.c_str()); cout<<strlen(remp.c_str())<<endl; cout<<remp.length()<<endl; printf("%s\n",remp.c_str()); cout<<strlen(remp.c_str())<<endl; } return 0; }
|
很有意思的是用scanf强转读入的string字符串,用其内置的length()函数求其长度竟然使用不了,将string强转为char数组再用strlen()求长度就能求出来了,真的很神奇
5.string读入,printf输出(好像没啥用)
1 2 3 4 5 6 7 8 9
| #include <bits/stdc++.h> using namespace std; int main() { string remp; getline(cin, remp); printf("%s", remp.c_str()); return 0; }
|