請注意,Stack中還有一個類似於我的問題,但這個問題實際上提出了兩個問題。其中一個問題與我的問題無關,而且是唯一回答的問題。練習5.1在K&R中的用法c
我也會問一個不同的問題。它可以在下面找到:我想通過指針存儲在數組中的零怎麼辦?
的鍛鍊給我一個函數,int getint(int *)
,這需要一個數組元素的地址,ASCII數字從輸入流轉換,然後將它們存儲作爲INT指針的十進制數。如果下一個輸入不是數字,則返回EOF
,如果輸入包含有效數字,則返回正值。該功能包含一個功能ungetch()
,它將字符推回到輸入流。
我不明白下面的練習中的措辭:
書面,getint治療+或 - 不是後面跟着一個數字作爲零的有效表示。修復它推回這樣的字符回輸入
這是說我應該推+或 - 回到輸入流或推動不是數字的字符回到輸入流?另外,我應該如何通過指針處理存儲在數組中的零?
下面是代碼:
int getint(int *pn)
{
int c, sign;
while (isspace(c = getch()))
;
if (!isdigit(c) && c != EOF && c != '+' && c != '-'){
ungetch(c);
return 0;
}
sign = (c == '-') ? -1 : 1;
if (c == '+' || c == '-')
c = getch();
for (*pn = 0; isdigit(c); c = getch())
*pn = 10 * *pn + (c - '0');
*pn *= sign;
if (c != EOF)
ungetch(c);
return c;
}
K&R的問題是鼓勵人們編寫像上面這樣的代碼。 – 2014-09-01 18:46:13
它有什麼問題?你會讓我做什麼?我只是用這本書學習編碼和語言。 – Spellbinder2050 2014-09-01 18:51:25
問題在於,該書過於令人難以置信,語言及其使用(根據最佳實踐等)自寫入以來發生了很大變化。我強烈建議您從以下列出的「初學者」書籍之一學習:http://stackoverflow.com/a/562377/129570 – 2014-09-01 18:53:22