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);
    }
}

它应该打印出来:一二三

抱歉,我对此不了解更多,它基于我试图做的事情,但我没有成功阅读字符串。必须将其放在像这样的单独功能中。谢谢,

4

2 回答 2

5
input = stringOptions[i % 3];

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

void incrementString(char **input) {

...

*input = stringOptions[i%3];

然后像这样称呼它:

incrementString(&string);

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

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

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

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

该循环将永远不会执行。更改><

于 2012-12-10T03:11:35.657 回答