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 に答える