如何将C字符串中的计数器变量赋予函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将C字符串中的计数器变量赋予函数相关的知识,希望对你有一定的参考价值。

我在main中有一个函数,它从main函数中获取一个字符串。

主要,我有以下代码:

int main(void)
{
  char string[] = "string" ;

  function(string);

  return 0;
}

在此函数中,我有一个循环遍历字符串。当特定条件为真时,我调用另一个函数,该函数必须再次使用字符串以及计数器。

unsigned int function(char* string)
{
  int counter = 0;
  while (string[counter] == ...)
  {
     if (... some condition ...) 
       anotherFunction(&string, &counter)
  }
}

anotherFunction()的功能原型:

anotherFunction(char* string[], int* counter)

问题是我如何在此函数中使用计数器处理字符串?

void anotherFunction(char* string[], int* counter)
{
  // ??? string[counter] // ???
}
答案

您正在将stringcounter都传递给anotherFunction()作为指针,因此,要访问字符串中的字符,您需要同时取消引用这两个字符:

*string[*counter]
^       ^

但是,仍然不清楚为什么要通过指针传递这些参数。对于string,几乎可以肯定是一个错误。对于counter,仅在anotherFunction()要修改counter并且该修改在调用函数中可见的情况下才有必要。

您似乎有意要两个

void anotherFunction( char* string, int* counter)

然后

string[*counter]

void anotherFunction( char* string, int counter)

string[counter]

如果您确实想修改counter,最好只返回一个值:

int anotherFunction( char* string, int counter);

然后:

counter = anotherFunction( string, counter ) ;

以上是关于如何将C字符串中的计数器变量赋予函数的主要内容,如果未能解决你的问题,请参考以下文章

如何在导航抽屉活动模板中的片段之间传递字符串变量

如何优化C ++代码的以下片段 - 卷中的零交叉

如何正确编组从Unity到C / C ++的字符串?

C语言编写程序,将一个字符串中的大写字母转换为对应的小写字母,小写字母转换为对应的大写字母,并统计数

第六章 动态类型简介

c语言速记2(存储类,运算符)