2013-03-30 38 views
-2

我正在使用Pelles編譯器進行windows操作。 我有兩個錯誤C#2140:將參數1中的錯誤輸入到'scanf';期望'const char * restrict',但發現'int'

#2168: Operands of '&' have incompatible types 'char *' and 'char *'. 
#2140: Type error in argument 1 to 'scanf'; expected 'const char * restrict' but found 'int'. 

我的代碼看起來像

#include <stdio.h> 
    static char herp[20]; 

    int main() 
    { 
     int a; 
     a = 2; 
     printf("Some random number %d\n" ,a); 
     scanf("Input: %c" &herp); 
     getchar(); 
     return 0; 
    } 

它好像它有很多與scanf的問題,所以我不知道爲什麼。我對C非常陌生,並且非常喜歡它。幫助將不勝感激。

+1

你缺少的字符串,並以'scanf'第二個參數之間用逗號。 –

+1

你在看哪本書? – Sebivor

+1

我只是通過在互聯網上的許多教程罐頭。我喜歡的教程之一是http://www.cprogramming.com – John

回答

1
scanf("Input: %c" &herp); 

缺少一個逗號:

scanf("Input: %c", &herp); 

由於herp是一個字符數組,你應該指定要寫入,例如什麼字符

scanf("Input: %c", &herp[0]); // to write to the first character. 

如果你輸入一個字符串,你會離開關&

scanf("Input: %s", herp); 
+0

謝謝我不知道爲什麼我沒有接受,但爲什麼我仍然得到這個錯誤? #2234:「scanf」的參數2與格式字符串不匹配;預期'char *',但發現'char(*)[20]'。 – John

+0

@John只要將它改爲'scanf(「Input:%c」,herp);'從技術上講它與'&herp'相同,但是編譯器會抱怨。 – 2013-03-30 02:46:09

+0

@Armin:他們不一樣; 'herp'是'char *','&herp'是'char(*)[20]'。後者是一個數組類型; 'herp + 1'和'&herp + 1'指向非常不同的地方。 – nneonneo

相關問題