0

在查看其他代码示例的帮助下,我制作了一个成功使用命令行参数的凯撒密码。但是,我想制作一个版本,您可以在其中扫描密钥,而不是将其作为命令行参数。问题是,由于某种原因我无法弄清楚,代码的 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);    
4

1 回答 1

0

scanf()将换行符留在缓冲区中,因此当您到达 时fgets(),读取的第一个字符是换行符,它终止fgets()调用,有效地返回一个空行。在调用之前,您需要做一些事情来跳过换行符fgets()

于 2012-08-14T18:17:56.797 回答