2012-12-10 20 views
1

我发现这个程序通过串运行,并打印出来。我知道有一个错误,但我不是100%确定它是什么。C程序,增加通过琴弦

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

它应该打印出来:一二三

对不起,我不知道更多一点,它是基于什么,我试图做的,但我是通过串不成功的读数。这是至关重要的,在这样的单独的功能。谢谢,

+0

正确的缩进会使大家都高兴了很多与你的问题。 – xaxxon

+0

当你问一个问题时,你应该指定既定的行为,以及你目前所看到的。 – xaxxon

回答

5
input = stringOptions[i % 3]; 

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

void incrementString(char **input) { 

... 

*input = stringOptions[i%3]; 

然后调用它像:

incrementString(&string); 

而且还什么zoidberg谈到你的循环。

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

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

+0

谢谢,这正是我需要知道的。双指针修复了一切。我可以在4分钟内将此投票作为正确答案。 – trueCamelType

+0

很酷。很高兴我能够帮助! – xaxxon

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

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

+0

对不起,这是一个错误的。谢谢 – trueCamelType