簡體   English   中英

使用終端而不是Xcode運行C腳本

[英]Running C scripts with terminal instead of Xcode

目前,我正在使用Xcode在Mac上開發幾個C程序。 但是,有1個問題。 我的學習要求我通過編碼使用某種輸入字段。 因此,例如,如果用戶要運行該程序10次或希望該程序創建10個答案。 我使用“ atoi(argv [1])”只是為了從用戶那里獲取輸入。

這正是問題所在。 一旦運行該程序,它就會開始出現錯誤,這是我問的正常現象,因為他正在等待輸入而未收到輸入或其他內容。 無論如何,我試圖通過以下鏈接解決此問題: 如何從終端運行命令行應用程序?

不幸的是,這也沒有解決。 我已經嘗試過重新安裝xcode,因為僅在終端中輸入gcc也不起作用,但是每次應用商店自動為我安裝它時。

有誰能解決我的問題。 我非常感激,因為下個星期五我還有另一個截止日期:(如果用戶輸入不起作用,我將不會獲得足夠的成績。

再次感謝您的幫助!

問候,

基普·斯克里迪

編輯:澄清問題。 運行腳本時,我希望它在終端中彈出,並且有一個輸入字段被要求輸入。 目前,由於缺乏輸入,他立即崩潰。 他不等待參數從用戶傳遞。 他正在跳過那部分

如何從Xcode IDE將命令行參數傳遞給您的程序

  1. 打開項目的活動方案 最簡單的方法是從主菜單。 選擇產品/方案/編輯方案...
  2. 在模式編輯器中,您會在左側看到幾個構建目標。 您想要的一個是“ Run YourProjectName”目標。 選擇它。
  3. 在右側,您將看到四個子選項卡,包括“信息”,“參數”,“選項”和“診斷”。 選擇參數
  4. 添加/刪除您需要的任何參數。 在您的情況下,將/phi作為第一個參數,然后將10作為第二個參數。

值得注意的是:在這里,您還可以在啟動時指定程序的當前工作目錄,而不是Xcode在構建二進制文件時使用的較長的臨時路徑。 為此:

  1. 從上面執行步驟1-2。
  2. 選擇選項子選項卡
  3. 單擊“使用自定義工作目錄”復選框。
  4. 指定您希望Xcode從中執行程序的完整路徑。

結合在程序中修復參數處理功能,可以使您正常運行。

在我看來,您想從命令行獲取參數,如果缺少參數,請提示用戶輸入參數

假設您需要以下參數:數字單詞數字

#include <stdio.h>
#include <string.h>

int number1;
char word[128];
int number2;

int main(int argc, const char **argv)
{
    if (argc == 4)
    {
        number1 = atoi(argv[1]);
        strcpy(word, argv[2]);
        number2 = atoi(argv[3]);
    }
    else
    {
        do
            printf("Enter number word number: ");
        while (scanf("%d %s %d", &number1, word, &number2) != 3);
    }

    printf("I got %d '%s' %d\n", number1, word, number2);
    return 0;
}

這使:

$ ./test
Enter number word number: 1 andy 12
I got 1 'andy' 12
$ ./test 2 pandy 56
I got 2 'pandy' 56

請注意,在此示例中,錯誤檢查效果很差,並且可以進行很多改進(不使用atoi()是啟動的一種方法)。

聽起來就像RageD指出的那樣,您需要在程序中檢查argc,否則在啟動參數不足的程序時會導致問題。

gcc是c編譯器-它生成可執行文件。 當您在Xcode中點擊“運行”時,它將編譯您的程序,然后運行創建的可執行文件。 創建的可執行文件的名稱與您的Xcode項目名稱相同。

要從命令行運行您在Xcode中構建的程序:

  • 在Xcode的項目導航器中,在“產品”文件夾中找到可執行文件
  • 將可執行文件拖到終端中(您將獲得可執行文件的絕對URL)
  • 添加運行程序所需的任何參數
  • 點擊輸入!

結果看起來類似於下面的代碼片段(對於我的“ MyCommandLineApp”項目):

$ /Users/pliskin/Library/Developer/Xcode/DerivedData/MyCommandLineApp-hbpuxhguakaagvdlpdmqczucadim/Build/Products/Debug/MyCommandLineApp argument1 argument2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM