机试练习基础题目,温习知识(1) scanf 与 gets 的使用

吉大机试题目 求字符串的反码。             http://ac.jobdu.com/problem.php?pid=1105 


一般会按照普通C语言的习惯,输入用SCANF。但是,我们都忽略了,SCANF 对于空格,回车,TAB ,的处理是当做结束符的。回想很久前学习C语言输入多个 变量时,中间会用 空格,老师会告诉我们,空格和回车都行。但是我们却不知道 其中的原理是什么。近日开始温习编程基础,一下手就出错,想到了就写下来。  


有多久没写技术博客,离开了 编程有多久,算一算吧,有一年半了,最近的编程还是在写MATLAB。。刚开始上路就为了其他事情丢下来。意识到时以晚,只能抓紧时间拼命弥补各个方面的不足。向世界默默地宣告一声“I AM BACK!”

***********************************************************************************************************************************************************************************************************************************

功能:输入字符串

格式: scanf("%s",s);

             gets(s);

注: s定义:   char s[N] 或者是 char * s

用法注意: scanf  ,输入一个字符串后会自动添加'\0'  ;但是遇到 空格, 回车,制表符 会结束。

                     所以若要输入空格,回车,要用gets();


代码:


#include<stdio.h>
#include<string.h>

#define N 90

int main()
{
char s[N];
int i=0;

while(1)

{
  //scanf("%s",s);
gets(s);
if(s[0]=='!'&&strlen(s)==1) break;
i=0;
while(s[i]!='\0')
{
if(s[i]<=90&&s[i]>=65)
printf("%c",155-s[i]);
else if(s[i]<=122&&s[i]>=97)
printf("%c",97+122-s[i]);

else
printf("%c",s[i]);

i++;

}
printf("\n");
}
return 0;
}

这样是正确的,可以处理空格,回车符。但是若用scanf会报PE的错误。就是在于,scanf读不入空格,运行结果会丢失空格。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值