c程序,通过字符串递增
我发现这个程序可以运行字符串并打印它们。我知道有一个错误,但我不是100%确定它是什么c程序,通过字符串递增,c,string,increment,c-strings,C,String,Increment,C Strings,我发现这个程序可以运行字符串并打印它们。我知道有一个错误,但我不是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 *st
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);
}
}
char*stringOptions[]={“一”、“二”、“三”};
无效增量字符串(字符*输入)
{
静态int i=0;
输入=字符串选项[i%3];
i=(i+1)%3;
}
作废打印字符串(作废)
{
char*string=“initial”;
int i;
对于(i=0;i<3;++i)
{
递增字符串(字符串);
printf(“%s”,字符串);
}
}
它应该打印出来:一二三
对不起,我不知道更多,这是基于我试图做的事情,但我没有成功地阅读字符串。这是至关重要的,这是在像这样的单独功能。谢谢
for(i = 0; i > 3; ++i) {
incrementString(string);
printf("%s ", string);
}
这个循环永远不会执行。将
更改为
这个循环永远不会执行。将
更改为
这没什么用。请记住,C按值传递所有内容,因此您所做的只是将输入的本地副本设置为新地址。您可能希望向函数中传递一个双指针,然后设置取消引用的版本:
void incrementString(char **input) {
...
*input = stringOptions[i%3];
那么就这样称呼它:
incrementString(&string);
还有zoidberg所说的关于你的循环
for(i=0; i < 3; ++i) {
(i=0;i<3;++i)的{
因为for循环的第二部分是它应该继续循环的条件
这没有任何作用。请记住,C按值传递所有内容,因此您所做的只是将输入的本地副本设置为一个新地址。您可能希望向函数中传递一个双指针,然后设置取消引用的版本:
void incrementString(char **input) {
...
*input = stringOptions[i%3];
那么就这样称呼它:
incrementString(&string);
还有zoidberg所说的关于你的循环
for(i=0; i < 3; ++i) {
(i=0;i<3;++i)的{
因为for循环的第二部分是它应该继续循环的条件。适当的缩进将使每个人都对你的问题感到高兴。当你提出问题时,你应该指定预期的行为以及你当前看到的内容。适当的缩进将使每个人对你的问题感到高兴n、 当你问一个问题时,你应该指定你想要的行为以及你当前看到的。对不起,那是一个错误的类型。谢谢,那是一个错误的类型。谢谢,这正是我需要知道的。双指针解决了所有问题。我可以在4分钟内将此作为正确答案投票。酷。很高兴我能提供帮助!T汉克斯,这正是我需要知道的。双指针解决了所有问题。我可以在4分钟内投票选出正确答案。酷。很高兴我能帮上忙!