c程序,通过字符串递增

时间:2012-12-10 03:10:01

标签: c string increment c-strings

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

应打印出来:一两三

抱歉,我不知道更多关于它的信息,这是基于我试图做的事情,但是我读完字符串是不成功的。至关重要的是,这应该是这样的单独功能。谢谢,

2 个答案:

答案 0 :(得分:5)

input = stringOptions[i % 3];

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

void incrementString(char **input) {

...

*input = stringOptions[i%3];

然后称之为:

incrementString(&string);

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

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

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

答案 1 :(得分:3)

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

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