我新的編程,啓動了與Objective-C的,但已經決定回到基礎進一步進展之前。我花了一些時間在C上,並且正在通過指針混淆掙扎。我的問題是關於如何實現fgets的K &(p165,第二版)。下面的代碼是直接從我的幾條評論的文本。與fgets實現(K&R)
char* fgets(char* s, int n, FILE *iop)
{
register int c;
register char* cs;
cs = s;
while(--n > 0 && (c = getc(iop)) != EOF)
{
// put the input char into the current pointer position, then increment it
// if a newline entered, break
if((*cs++ = c) == '\n')
break;
}
*cs = '\0';
return (c == EOF && cs == s) ? NULL : s;
}
1)我們通過一個char * s到的與fgets功能,在其位置,我們存儲用戶輸入。爲什麼需要聲明本地char * cs - 然後將其初始化爲s?爲什麼我們不能在if語句中直接操作/添加到s?看到cs被初始化爲s,是不是將cs添加到完全相同的東西?
2)與上述系杆在...在函數返回時,進行測試以查看是否CS ==秒。爲什麼這是必要的?
我想我可能會丟失一些非常基本的 - 我這樣做了檢查和谷歌,但不能完全弄清楚。謝謝!
「從Objective-C開始,但決定在進一步發展之前回到基礎知識」 - 非常好,**每個初學者都應該這樣做。** – 2013-05-06 11:31:57
我剛開始覺得我正在步步爲營在Obj-C中。自從回到C後,我再次感受到了一個完整的klutz,但是儘管我反覆敲打了分段故障和奇怪的程序行爲,但這絕對值得。 – drjimmie1976 2013-05-06 18:13:39
這是最值得的。掌握C對於理解Objective-C是不可避免的。 – 2013-05-06 18:28:03