题目链接
知识点:
- gets函数:
char a[40000];
gets(a);
gets从标准输入设备读字符串函数,其可以无限读取,不会判断上限,以回车结束读取,所以应该确保buffer的空间足够大,以便在执行读操作时不发生溢出;接受数组a必须是char型数组,即char a[40000];这个40000代表的就是buffer;gets遇到空格不会停止输入,只有遇到换行符才会停止输入;
不管输入多少个空格,gets都会如实记录控制台输入的数据;
注意: gets()已经不被PAT中C++编译器支持
改变之处在于:
- cin.getline(str,num)
由于gets不能再使用,更换为此函数实现同样功能:
①增加#include
using namespace std;
②gets --> cin.getline
- getchar/putchar
使用<stdio.h>
使用ascii码来传输信息
一次传输一个字符
- 二维字符数组
解决字符串问题的常用方法
- 将输入值直接传到字符数组的方法:
char ans[90][90];
while(scanf("%s", ans[num]) != EOF){
num++;
}
代码
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int main()
{
char str[90];
//gets(str);
cin.getline(str,90);
int len = strlen(str), row = 0, col = 0;
char ans[90][90];
for(int i = 0; i < len; i++){
if(str[i] == ' '){
ans[row][col] = '\0';
row++;
col = 0;
}
else{
ans[row][col++] = str[i];
}
}
for(int i = row; i >= 0; i--){
printf("%s",ans[i]);
if(i > 0)printf(" ");
}
return 0;
}