2012-08-14 73 views
0

我通過查看其他代碼示例的幫助,製作了一個成功處理命令行參數的凱撒密碼。但是,我想創建一個可以掃描密鑰的版本,而不是將其作爲命令行參數。問題是,出於某種原因,我無法弄清楚,代碼的fgets部分不會讓用戶輸入任何內容,程序只是運行並返回0.代碼的頂部部分在這裏:fgets不會讓用戶在凱撒密碼中輸入文本

#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

scanf()樹葉在緩衝區中的換行符,所以當你到fgets(),閱讀的第一個字符是一個換行符,終止了fgets()呼叫,有效地返回一個空行。在致電fgets()之前,您需要做一些跳過換行符的操作。

+0

我想我只是將提示輸入純文本提示下。謝謝! – Ryan 2012-08-14 18:43:56