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;
}
人能否請您解釋:
- 爲什麼發生這種情況
- 我會如何調試這種自己
許多感謝的問題。
爲什麼不把測試數據放在一個文件中並將其傳送到被測程序中?這將使您的測試更加一致並記錄下來。即。 '貓your_test_data | your_executable' –
控制檯程序(shell)的問題? – BLUEPIXY
我認爲這是在熟食模式下Unix終端驅動程序的限制。他們有一個固定大小的輸入緩衝區進行編輯。 – Barmar