为什么不能使用getchar()把scanf后的回车拿掉

P1914 小书童——凯撒密码

阿尔托莉雅吖 @ 2019-11-28 17:01:12

**#include <stdio.h>
#include <string.h>
#define MAXN 10**

int main()
{

        char str[50];
        int i,n,length;

        scanf("%d\n",&n);
        n=n%26;  \\取余
        getchar();  \\把scanf后的回车拿掉
        gets(str); \\输入str

     length=strlen(str); \\记录长度

     for(i=0;i<length;i++)  \\进行译码
     {

         if(str[i]+n>'z')
           str[i]='a'-1+(str[i]+n-'z');
         else
            str[i]=str[i]+n;
     }

            printf("%s",str); \\输出密码

    return 0;
}

by 爱滑稽的蒟蒻 @ 2019-11-28 18:30:31

getchar()

改成

char c=getchar();
while(c!=13) c=getchar();

就好了


by szuwaterbrother @ 2019-12-01 11:03:15

windows里面回车是\r\n两个字符 linux 是\n 洛谷是linux评测机 你直接%s读入不就完事了吗


by szuwaterbrother @ 2019-12-01 11:03:50


by szuwaterbrother @ 2019-12-01 11:13:04

不要在输入里面+回车哦

**#include <stdio.h>

include <string.h>

define MAXN 10**

int main() {

    char str[50];
    int i,n,length;

    scanf("%d",&n);
    n=n%26;  \\取余
    getchar();
    getchar(); \\把scanf后的回车拿掉
    gets(str); \\输入str

 length=strlen(str); \\记录长度

 for(i=0;i<length;i++)  \\进行译码
 {

     if(str[i]+n>'z')
       str[i]='a'-1+(str[i]+n-'z');
     else
        str[i]=str[i]+n;
 }

        printf("%s",str); \\输出密码

return 0;

}


|