1

現在、Xcode を使用して Mac でいくつかの C プログラムを開発しています。ただし、1 つの問題があります。私の研究では、コーディングを通じて何らかの入力フィールドを使用する必要があります。たとえば、ユーザーがプログラムを 10 回実行したい場合や、プログラムに 10 個の回答を作成させたい場合などです。ユーザーからの入力を取得するためだけに「atoi(argv[1])」を使用しています。

これがまさに問題です。プログラムを実行するとすぐに、バグが発生し始めます。これは通常、彼が入力を待っていて、それまたは他の何かを受け取っていないためです。とにかく、このリンクでこの問題を解決しようとしました:ターミナルからコマンドラインアプリケーションを実行する方法は?

残念ながら、これでも解決しませんでした。端末にgccを入力するだけでも機能しないため、すでにxcodeを再インストールしようとしましたが、アプリストアが自動的にインストールするたびに。

誰かが私の問題を解決していますか。来週の金曜日に別の締め切りがあるため、非常に感謝しています:(そして、ユーザー入力が機能しない場合、十分な成績を得ることができません.

あなたの助けは再び大歓迎です!

ご挨拶、

キプト・スクリディ

編集:問題を明確にする。スクリプトを実行するときに、ターミナルにポップアップして、入力を求める必要がある入力フィールドがあるかどうかを確認します。現時点では、入力が不足しているため、彼はすぐにクラッシュしています。彼は、ユーザーから引数が渡されるのを待っていません。彼はその部分をスキップしています

4

3 に答える 3

2

コマンドラインから引数を取得したいように思えますが、引数が欠落している場合は、ユーザーに引数の入力を求めてください

引数が必要だとしましょう:number word number

#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()が開始の1つの方法です)。

于 2013-02-11T16:09:07.770 に答える