tru*_*ype 1 c string c-strings increment
我发现这个程序通过字符串运行并打印出来.我知道有一个错误,但我不能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);
}
}
Run Code Online (Sandbox Code Playgroud)
应打印出来:一两三
对不起,我不太了解它,它是基于我想要做的事情,但我读完字符串是不成功的.至关重要的是,这应该是这样的单独功能.谢谢,
input = stringOptions[i % 3];
Run Code Online (Sandbox Code Playgroud)
这没有任何作用.请记住,C按值传递所有内容,因此您所做的只是将输入的本地副本设置为新地址.您可能希望将双指针传递给函数,然后设置解除引用的版本:
void incrementString(char **input) {
...
*input = stringOptions[i%3];
Run Code Online (Sandbox Code Playgroud)
然后把它称为:
incrementString(&string);
Run Code Online (Sandbox Code Playgroud)
还有zoidberg对你的循环所说的话.
for(i=0; i < 3; ++i) {
Run Code Online (Sandbox Code Playgroud)
因为for循环的第二部分是它应该继续循环的条件.