c程序,通过字符串递增

tru*_*ype 1 c string c-strings increment

我发现这个程序通过字符串运行并打印出来.我知道有一个错误,但我不能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);
    }
}
Run Code Online (Sandbox Code Playgroud)

应打印出来:一两三

对不起,我不太了解它,它是基于我想要做的事情,但我读完字符串是不成功的.至关重要的是,这应该是这样的单独功能.谢谢,

xax*_*xon 5

input = stringOptions[i % 3];
Run Code Online (Sandbox Code Playgroud)

这没有任何作用.请记住,C按值传递所有内容,因此您所做的只是将输入的本地副本设置为新地址.您可能希望将双指针传递给函数,然后设置解除引用的版本:

void incrementString(char **input) {

...

*input = stringOptions[i%3];
Run Code Online (Sandbox Code Playgroud)

然后把它称为:

incrementString(&string);
Run Code Online (Sandbox Code Playgroud)

还有zoidberg对你的循环所说的话.

for(i=0; i < 3; ++i) {
Run Code Online (Sandbox Code Playgroud)

因为for循环的第二部分是它应该继续循环的条件.