使⽤getchar()获取字符串
在C/C++中,输出printf或cout可以输出数字、字符、字符串。但是输⼊函数scanf和cin在输⼊字符串时遇空格便会停⽌,带来不少的⿇烦。
#include <iostream>
#include <string.h>
#include <cstdio>
using namespace std;
int main()
{
char c;
char s[200];
int i = 0;
cin >> s;
cout <<s<<endl;
return 0;
}
输⼊ i love you
输出 i
字符串函数gets怎么重新定义 如果为们想获取⼀段有空格的字符串scanf或cin便不起作⽤了,这时⼀般推荐gets函数,不幸的是报错:
'gets' is deprecated [-Wdeprecated-declarations] gets在新版的编译器中⼀般认为是危险的。
我们可以使⽤getchar()获取这样的字符串,需要注意的是getchar()连回车符都会读取。因此对字符串“i love you”,getchar()读取了11个字符(算上执⾏的回车符)。
#include <iostream>
#include <string.h>
#include <cstdio>
using namespace std;
int main()
{
char c;
char s[200];
int i = 0;
while(true)
{
c = getchar();
if (c == '\n') //防⽌回车符加⼊到s[]中
break;
s[i++] = c;
}
cout <<s<<endl;
return 0;
}
例题:
描述
Julius Caesar曾经使⽤过⼀种很简单的密码。对于明⽂中的每个字符,将它⽤它字母表中后5位对应的字符来代替,这样就得到了密⽂。⽐如字符A⽤F来代替。如下是密⽂和明⽂中字符的对应关系。
密⽂
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
明⽂
V W X Y Z A B C D E F G H I J K L M N O P Q R S T U
你的任务是对给定的密⽂进⾏解密得到明⽂。
你需要注意的是,密⽂中出现的字母都是⼤写字母。密⽂中也包括⾮字母的字符,对这些字符不⽤进⾏解码。
输⼊
⼀⾏,给出密⽂,密⽂不为空,⽽且其中的字符数不超过200。
输出
输出⼀⾏,即密⽂对应的明⽂。
样例输⼊
NS BFW, JAJSYX TK NRUTWYFSHJ FWJ YMJ WJXZQY TK YWNANFQ HFZXJX 样例输出
IN WAR, EVENTS OF IMPORTANCE ARE THE RESULT OF TRIVIAL CAUSES
#include <iostream>
#include <string.h>
#include <cstdio>
using namespace std;
char decode(char c)
{
if (c >= 'F' && c <= 'Z')
{
return (c - 5);
}
else if (c >= 'A' && c < 'F')
{
return c + 21;
}
else
return c;
}
int main()
{
char c;
char s[200];
int i = 0;
while(true)
{
c = getchar();
if (c == '\n')
break;
s[i++] = decode(c);
}
cout <<s<<endl;]
return 0;
}
样例输出:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论