printf("请输入明文:");
#include <stdio.h>int main()
{
int ch;
printf("请输入明文:");//这里为什么不需要scanf函数??
while ((ch = getchar()) != '\n')
{
if (ch >= 'a' && ch <= 'z')
{
putchar('a' + (ch - 'a' + 3) % 26);
continue;
}
if (ch >= 'A' && ch <= 'Z')
{
putchar('A' + (ch - 'A' + 3) % 26);
continue;
}
putchar(ch);
}
putchar('\n');
return 0;
} 这段程序是一个简单的凯撒密码加密程序,其原理是将输入的明文按照一定规律进行移位操作,从而得到密文。
在这段程序中,确实没有使用scanf函数来获取输入的明文,而是使用了getchar函数来逐个读取用户输入的字符。这是因为这个程序的设计思路是逐个处理用户输入的字符,并在处理完毕后立即输出,而不是先将所有输入的字符读入到一个缓冲区中,再逐个处理和输出。
另外,getchar函数和scanf函数的用法类似,都是从标准输入(stdin)中读取字符。不同之处在于,getchar函数每次只能读取一个字符,而scanf函数可以读取多个字符,并且可以根据格式化字符串指定读取的类型。在这个程序中,由于只需要读取单个字符并进行加密处理,因此使用getchar函数更为简便。
页:
[1]