2012-12-10 34 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