【问题标题】:c program, increment through strings [closed]c程序,通过字符串递增[关闭]
【发布时间】:2012-11-27 11:37:05
【问题描述】:

我发现这个程序可以遍历字符串并打印它们。我知道有一个错误,但我不是 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);
    }
}

应该打印出来:一二三

对不起,我不知道更多,这是基于我试图做的事情,但我没有成功阅读字符串。必须将其放在像这样的单独功能中。谢谢,

【问题讨论】:

  • 适当的缩进会让每个人都对你的问题更满意。
  • 当您提出问题时,您应该指定预期的行为以及您当前看到的内容。

标签: c string increment c-strings


【解决方案1】:
input = stringOptions[i % 3];

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

void incrementString(char **input) {

...

*input = stringOptions[i%3];

然后这样称呼它:

incrementString(&string);

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

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

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

【讨论】:

  • 谢谢,这正是我需要知道的。双指针可以解决所有问题。我可以在 4 分钟内将其投票为正确答案。
  • 酷。很高兴我能提供帮助!
【解决方案2】:
for(i = 0; i > 3; ++i) {
    incrementString(string);
    printf("%s ", string);
}

那个循环永远不会执行。将&gt; 更改为&lt;

【讨论】:

  • 抱歉,打错了。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-22
  • 2019-05-14
  • 1970-01-01
  • 1970-01-01
  • 2014-08-11
相关资源
最近更新 更多