1

このプログラムが文字列を実行して出力することがわかりました。エラーがあることはわかっていますが、それが何であるかは 100% わかりません。

char *stringOptions[] = {"one", "two", "three"};

void incrementString(char *input) 
{
    static int i = 0;
    input = stringOptions[i % 3];
    i = (i + 1) % 3;
}

void print_string(void) 
{
    char *string = "initial";
    int i;

    for(i = 0; i < 3; ++i) 
    {
        incrementString(string);
        printf("%s ", string);
    }
}

プリントアウトすることになっています: one two three

申し訳ありませんが、それについて詳しくはわかりません。これは、私がやろうとしていたことに基づいていますが、文字列を読み取ることができませんでした。これは、このように個別の機能にあることが不可欠です。ありがとう、

4

2 に答える 2

5
input = stringOptions[i % 3];

これは何もしません。C はすべてを値で渡すので、入力のローカル コピーを新しいアドレスに設定するだけです。関数に double ポインターを渡してから、逆参照されたバージョンを設定することをお勧めします。

void incrementString(char **input) {

...

*input = stringOptions[i%3];

次に、次のように呼び出します。

incrementString(&string);

また、あなたのループについてゾイドバーグが言ったことも。

for(i=0; i < 3; ++i) {

for ループの 2 番目の部分は、ループを継続する条件であるためです。

于 2012-12-10T03:15:45.287 に答える
3
for(i = 0; i > 3; ++i) {
    incrementString(string);
    printf("%s ", string);
}

そのループは決して実行されません。に変更><ます。

于 2012-12-10T03:11:35.657 に答える