2011-05-27 42 views
2

我想將參數傳遞給xCode中的命令行。我查了這個問題,發現我需要將工作目錄設置爲文件所在的路徑。另外,我必須將參數添加到project- edit activeexecutable下的參數選項卡。我也做了這個。C Xcode問題

我添加了michael.txt兩次。

/* This file is saved as readtext.c, compiled as readtext */ 
#include <stdio.h> 
void main(int argc, char *argv[]) 
{ 
    FILE *fin; 
    char buffer[100]; 
    printf("Michael Mazur\n"); 
    if (argc != 2) {printf("Usage: %s filename\n", argv[0]); exit(1);} 
    fin = fopen(argv[1], "r"); 
    if (!fin) {printf("Unable to open %s\n", argv[1]); exit(1);} 
    while (fgets(buffer, 99, fin)) fputs(buffer, stdout); 
    fclose (fin); 
} 

我一直在想,沒有2個參數被傳遞的情況。我還運行了一個小測試程序,它不斷返回,我只有1個參數被傳遞,無論我添加了多少。任何幫助?

+0

如果您在xcode之外手動運行程序並提供參數,它是否按預期工作? – akent 2011-05-27 04:27:24

+0

是的。如果我在xcode之外運行它,它按預期運行。 – Michael 2011-05-27 17:01:33

回答

4

argv[0](可執行文件的路徑)對在argc,因此,如果您添加michael.txt兩次,argc將3稍長介紹here。 (一般情況下,當事情是行爲不端這樣,無論是使用調試器來檢查所有值的變量或打印出來。)

確保兩個參數進行檢查,並在單獨的行,像這樣:

picture of xcode

此外,在未來請註明你是什麼版本的Xcode的使用;我認爲從你的描述來看,它是3.x,所以我就是這樣回答這個問題的。版本之間的用戶界面差別很大。

+0

對不起,我正在使用Xcode 3.2。如圖所示,我在單獨的行上檢查了參數。我仍然得到了答案,無論我通過使用這段代碼來測試多少次,我都會傳遞1個參數: – Michael 2011-05-27 16:59:36

+0

#include void showargs(int,char **); 的#define STAND_ALONE 1 的#ifdef STAND_ALONE INT主(INT的argc,字符* argv的[]){ \t的printf( 「邁克爾馬祖爾tessst \ n」); showargs(argc,argv); \t return(0); } #ENDIF 空隙showargs(INT的argc,字符* argv的[]){ \t INT I; printf(「程序名稱:%s \ n」,argv [0]); \t printf(「有%d個參數\ n」,argc); (i = 1; i Michael 2011-05-27 17:04:37

+0

你可以發佈你的項目的某處(只需將目錄壓縮併發布)?你可能會遇到一個模糊的Xcode錯誤... – 2011-05-27 21:50:47