在未知字符串长度的情况下
-
可以定义一个字符数组,通过
scanf("%s",str)
,使用该方法需要添加头文件#include<stdio.h>
;这种情况下碰到第一个空格就会停止读取。
例:#include<stdio.h> int main() { char str[40]; scanf("%s",str); printf("%s",str); return 0; }
输入
hello world
,输出为hello
-
可以定义一个字符串str(在C++中),通过
cin>>str
,使用该方法需要添加头文件#include <iostream>
并且定义命名空间using namespace std;
这种情况下碰到第一个空格就会停止读取。
例:#include <iostream> using namespace std; int main() { string str; cin>>str; cout<<str; return 0; }
输入
hello world
,输出为hello
-
可以定义一个字符串str(在C++中),通过
getline(cin,str)
使用该方法需要添加头文件#include <iostream>
并且定义命名空间using namespace std;
这种情况可以读取空格符,即可以读取包含空格符的字符串。注意,如果在getline之前读取完一个整数,需要先用getchar接收整数后的换行符(因为getline函数识别换行符\n作为输入结束)
例:#include<iostream> using namespace std; int main() { string str; getline(cin,str); cout<<str; return 0; }
输入
hello world
,输出为hello world
-
可以定义一个字符串数组,通过
gets(str)
读取完整字符串;C和C++中均可以。这种情况可以读取空格符,即可以读取包含空格符的字符串。但是PAT中禁用gets函数,gets函数会删除换行符(’\n’),而scanf不会。注意,如果在gets之前读取完一个整数,需要先用getchar接收整数后的换行符(因为gets函数识别换行符\n作为输入结束)
例:#include<iostream> #include<cstring> using namespace std; int main() { char str[40]; gets(str); for(int i=0;i<strlen(str);i++) cout<<str[i]; return 0; }
例:
#include<stdio.h>
#include<string.h>
int main()
{
char str[40];
gets(str);
printf("%s",str);
return 0;
}
输入hello world
,输出为hello world
已知字符串长度的情况下
-
除了以上的方法之外,还可以使用getchar函数,将字符一个一个的读取进字符数组中,这种情况下可以读取空格符
例:#include<iostream> using namespace std; int main() { char str[6]; for(int i=0;i<6;i++) str[i]=getchar(); for(int i=0;i<6;i++) cout<<str[i]; return 0; }
输入
i hell
,输出为i hell
字符串的输出问题
-
可以使用
printf("%s",str)
一次性输出整个字符串,或者通过循环遍历单次输出字符数组中的字符
例:#include<stdio.h> int main() { char str[40]="hello world"; printf("%s",str); return 0; }
例:
#include<stdio.h>
#include<string.h>
int main()
{
char str[40]="hello world";
for(int i=0;i<strlen(str);i++)
printf("%c",str[i]);
return 0;
}
输出均为hello world
- 可以使用
cout<<str
一次性输出整个字符串(此时必须定义为字符串型而非字符数组),或者通过循环遍历单次输出字符数组中的字符。使用该方法需要添加头文件#include <iostream>
并且定义命名空间using namespace std;
例:
#include <iostream>
#include<cstring>
using namespace std;
int main()
{
char str[40]="hello world";
for(int i=0;i<strlen(str);i++)
cout<<str[i];
return 0;
}
例:
#include <iostream>
#include<cstring>
using namespace std;
int main()
{
string str="hello world";
cout<<str;
return 0;
}
输出均为hello world
- 如果是用字符数组存储的字符串,可以使用
puts(str)
将字符数组存储的字符串输出来
例:
#include<stdio.h>
#include<string.h>
int main()
{
char str[40]="hello world";
puts(str);
return 0;
}
例:
#include <iostream>
#include<cstring>
using namespace std;
int main()
{
char str[40]="hello world";
puts(str);
return 0;
}
输出均为hello world
- 通过循环遍历
putchar(str[i])
可以将字符串或者字符数组中保存的字符一个一个输出
例:
#include<stdio.h>
#include<string.h>
int main()
{
char str[40]="hello world";
for(int i=0;i<strlen(str);i++)
putchar(str[i]);
return 0;
}
例:
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
char str[40]="hello world";
for(int i=0;i<strlen(str);i++)
putchar(str[i]);
return 0;
}
例:
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
string str="hello world";
for(int i=0;i<str.length();i++)
putchar(str[i]);
return 0;
}
输出均为hello world