2013-07-05 37 views
0

我自學下使用ķ& R.練習1-16要求我重構一些提供的代碼,得到的「任意長的輸入線」的長度。C程序將停止接受輸入在1023個字符

雖然在我發現我的終端停止後1023個字符接受輸入,處理問題;一個非常可疑的數字,我相信你會同意!我已經在Mac OS X和OpenBSD上進行了測試,並且看到了相同的行爲。該程序沒有停止響應,因爲鍵入退格鍵並提交輸入正常工作。

我無法弄清楚如何使用gdb,因爲數據錄入過程中出現的問題,用gdb單步調試時,這個,不提交後。

我可以看到沒有提及在的getchar或bash手冊頁的限制,實際上也無妨似乎很少的投入。

我將問題簡化爲以下內容並查看相同的行爲。

#include <stdio.h> 

main() 
{ 
    int c,i=0; 

    while ((c=getchar()) != EOF && c!='\n') 
    ++i; 
    printf("%d\n",i); 

    return 0; 
} 

人能否請您解釋:

  1. 爲什麼發生這種情況
  2. 我會如何調試這種自己

許多感謝的問題。

+2

爲什麼不把測試數據放在一個文件中並將其傳送到被測程序中?這將使您的測試更加一致並記錄下來。即。 '貓your_test_data | your_executable' –

+0

控制檯程序(shell)的問題? – BLUEPIXY

+6

我認爲這是在熟食模式下Unix終端驅動程序的限制。他們有一個固定大小的輸入緩衝區進行編輯。 – Barmar

回答

2

根據對我的問題的評論,它似乎是一個終端限制。將程序文件插入程序可按預期工作。