2012-10-10 48 views
1

我在看書"Objective-C Programming The Big Nerd Ranch Guide"傳遞字符在C中的功能(是書錯了?)


他們給了這個代碼:

void congratulateStudent(char student, char course, int numDays) 
{ 
printf("%s has done as much %s Programming as I could fit into %d days.\n", student, course, numDays); 
} 

呼叫其與此:

congratulateStudent("Mark", "Cocoa", 5); 

這給了我這樣的警告:

Format specifies type 'char *' but the argument has type 'char' 

這本書是否錯了?

+0

錯字我想,,, !!! –

+0

這本書是關於objective-c的,他們首先教你c – kevinius

+1

也許[這本書有過更新](http://books.google.ch/books?id=Mqu-mnXZAi8C&pg=PA28&lpg=PA28&dq=congratulateStudent&source = BL&OTS = jSvBEoJvy8&SIG = druPNA-L6Uo3iJDoAcedzXqoxcU&HL = EN&SA = X&EI = K-B1UO6QJIv14QSBh4CwDQ&redir_esc = Y#v = onepage&q = congratulateStudent&F =假)? – Bart

回答

1

是的,這是不正確的。也許是一個打印錯誤。只是讓它們的指示:

void congratulateStudent(char* student, char* course, int numDays) 

技術上講,它在C未定義行爲不正確的格式字符串傳遞給printf

1

是的,如果這是本書說的做的話,那肯定是一個錯誤,它應該是char *作爲方法中的參數,如警告所說的。

0

是的,這本書有一個錯字。

您應該使用char*而不是char您的C函數的兩個參數

2

可能有錯字。

Char表示單引號中只有一個字符,如'a'

一個常量字符串用雙引號引起,並衰減爲char*或字符指針,就像這樣。

"Hello World"