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;
}