2013-03-12 64 views
0

我編譯我的工作,不停地出現,無論我怎麼修改我的代碼,這樣的錯誤:如何在'char'之前阻止錯誤「預期表達式?

expected expression before ‘char’ 

format ‘%s’ expects type ‘char *’, but argument 2 has type ‘int’ 

的第二個錯誤,我試着使用類型轉換但問題確實存在。有誰知道如何? 這是我的代碼的一部分:

while (char my_wget (char web_address[BUFLEN]) != EOF) { 
    printf ("%s", (char) web_address[BUFLEN]); 
+4

獲取關於C的書並從中學習語言。不要只寫一些東西來編譯,更不要說工作了。 – 2013-03-12 05:25:13

回答

2

因爲你有一個語法錯誤,你寫了charchar是不允許的。

也許你腦子裏:

int ch; 
char web_address[BUFLEN]; 

while ((ch = my_wget(web_address)) != EOF) 
    printf("%s\n", web_address); 

有了正確的聲明my_wget()左右(如extern int my_wget(char *buffer);),應該編譯。你無法在任何地方聲明變量。

第二個錯誤是因爲web_address[BUFLEN]是一個字符(當然在我的代碼中;它似乎也在你的代碼中,因爲編譯器設法識別足夠的類型以產生錯誤)。如果你像我一樣宣佈它,它也是一個超出數組最後的數組。將一個char值(可能是一個8位數量)作爲地址(指針;可能是一個32位或64位數量)是錯誤的,這就是編譯器抱怨的原因。

1

printf()聲明,請嘗試更改部分charchar* 同樣適用於條件的while循環。在web_address之前更改char(char*)

我覺得很奇怪,你在my_wget()之前寫"char"。你可以請更具體嗎?

1

見下

#include <stdio.h> 

int main() 
{ 
char c; 
printf ("%s", st); 
} 

當我編譯此代碼,我得到同樣的警告消息。

warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘int’ 

,所以我的計劃改爲

#include <stdio.h> 

int main() 
{ 
char *str = "string"; 
printf ("%s", st); 
} 

而且現在的程序編譯正確。

因此,作爲c的新手,這就是你如何學習語言,寫出最小的例子,以證明你對這個概念的牢牢掌握。

相關問題