我发现这个程序通过字符串运行并打印出来。我知道有一个错误,但我不能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);
}
}
应打印出来:一两三
抱歉,我不知道更多关于它的信息,这是基于我试图做的事情,但是我读完字符串是不成功的。至关重要的是,这应该是这样的单独功能。谢谢,
答案 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);
}
该循环永远不会执行。将>
更改为<
。