2015-06-15 103 views
0

我甚至不知道發生了什麼,我剛開始一個新項目並設置一個基本的貓只是爲了確保一切正常,這發生了。警告:格式'%s'需要'char *'類型的參數,但參數2的類型'int'使用argv

#include "stdlib.h" 
#include "stdio.h" 

int main(int argc, char *argv) { 
    printf("%s",argv[0]); 
    return 0; 
} 

就是這樣,我重新安裝了gcc,g ++和multilib。我真的不知道該怎麼想。

+4

它應該是char ** argv,它是一個字符串數組,不是單個字符串 –

+5

'char * argv' typo as'char ** argv' – BLUEPIXY

+0

@EricRenouf;它不是字符串的數組。它的指針指向'char'的指針。 – haccks

回答

7

argv的聲明類型錯誤。的main簽名應該是一個:

int main(int argc, char **argv); 
int main(int argc, char *argv[]); // Functionally equivalent to above 

注意main也可以採取void忽略的參數,但是這是不是你要找的東西在這裏。

我個人更喜歡上面列出的第二種形式,因爲我發現它比第一種(指向char*的指針更直觀),但由於數組僅僅是C中的指針算術,所以兩者都可以。

+1

我必須喝醉或類似的東西,你說得對。謝謝。 –

5

main函數的第二個參數通常定義爲char **argvchar *argv[];兩種方式都是正確的。

而包含句子也是錯誤的。使用#include "file.h"它會照顧當前文件夾中的file.h,但是如果您包含C標準庫中的頭文件,則它應該是#include <file.h>

+2

'#include'stdio.h''表示通常可以正常工作,但是你說得對,標準使用'#include ',你也應該這樣做,除非有特殊的理由否則。 –

相關問題