WERTYU问题

wyz159753 2012-08-02 09:33:36
问题:输入一个错位后的字符串,输出打字员本来想打出的句子。(将输入的字母在键盘上左移一位)
如输入 o s, gomr ypfsu 输出i am fine today
#include<stdio.h>
char *s="1234567890-=qwertyuiop[]asdfghjkl;'\\zxcvbnm,./";
int main()
{
int i,c;
while((c=getchar())!=EOF)
{
for(i=1;s[i]&&s[i]!=c;i++);
if(s[i])putchar(s[i-1]);
else putchar(c);
}
return 0;
}
这是书上给的一段代码,我不明白这一句for(i=1;s[i]&&s[i]!=c;i++);里面判断s[i]干什么?
奇怪的是我改成for(i=1;s[i]!=c;i++);后,输入的空格便不输出了;
...全文
440 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
判断s[i] 是因为如果 s[i]==0,及遇到 '\0' 也就是0的时候终止循环
酱油党 2012-08-02
  • 打赏
  • 举报
回复
我这边不会,可能是你使用的字符集导致在char *s="1234567890-=qwertyuiop[]asdfghjkl;'\\zxcvbnm,./";找不到空格所对应的字符了,所以死循环了。
这个只接受你s中有的可见字符输入后改写成它的前一个字符。
N久前曾用这个简单加密,那一串东西就是所谓的密匙啦
wyz159753 2012-08-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

for(i=1;s[i]&&s[i]!=c;i++);
//意思是s[i] != 0 也就是字符串木结束
[/Quote]
那样为什么会造成空格不输出的情况呢
酱油党 2012-08-02
  • 打赏
  • 举报
回复 1
for(i=1;s[i]&&s[i]!=c;i++);
//意思是s[i] != 0 也就是字符串木结束

33,316

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧