我在查看其他代码示例的帮助下,创建了一个成功使用命令行参数的Caesar密码。但是,我想创建一个版本,您可以在其中扫描密钥而不是将其作为命令行参数。问题是,由于某种原因,我无法弄清楚,代码的fgets部分不允许用户输入任何东西,程序只是运行并返回0.代码的顶部是:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main (void)
{
int k; //key
char e[100]; //plain text to encrypt
int length; //string length for plain text
int c; //encrypted int (displays as char)
//get key
printf("Key? ");
scanf("%d", &k);
//display the key
printf("The key is: %i\n", k);
//prompt for plain text to encrypt
printf("Please enter the words to encrypt:\n");
fgets(e, 100, stdin);
printf("%s", e); //print words to encrypt
//get length of plain text string
length = strlen(e);
答案 0 :(得分:0)
scanf()
将换行符保留在缓冲区中,因此当您到达fgets()
时,读取的第一个字符是换行符,终止fgets()
调用,有效返回空行。在致电fgets()
之前,您需要做一些事情来跳过换行符。