将字符串作为参数传递

时间:2015-12-08 21:06:39

标签: c string

我正在尝试将字符串作为参数传递,但结果总是pointer.c:13:14: error: cannot convert ‘char**’ to ‘char*’ for argument ‘1’ to ‘int swg(char*)

我要传入的字符串看起来像

char * str

此字符串使用fgets / getline

获取值

我的功能看起来像这个

int swg ( char *g){
   char *tmp;
   size_t i;
   tmp=strtok(*g,">");
   for ( i = 0 ; i < strlen ( tmp ) ; i ++ ) {
     if(tmp[i]=='A') return 0;
   }
   return 1;
  }

我称之为

int tst;
tst=swg(str)

我甚至尝试使用tst=swg(&str)但它没有用,我怎么能把字符串作为参数传递呢?

2 个答案:

答案 0 :(得分:3)

对我来说不正确的行是

tmp=strtok(*g,">");

这应该是:

tmp=strtok(g,">");

电话tst=swg(str)显示正常。

答案 1 :(得分:0)

要简单地修复转化不匹配,只需将tmp=strtok(*g,">");替换为tmp=strtok(g,">");

无论如何,您的代码似乎还有其他问题。

为了处理输入字符串中的每个标记,您必须调用strtok(),直到没有其他标记要处理。

在下面找到一个例子。

#include <stdio.h>
#include <string.h>

int swg(char g[])
{
   size_t i;
   char *tmp = strtok(g, ">");
   while (tmp != NULL)
   {
       for (i=0; i<strlen(tmp); i++)
           if (tmp[i] == 'A')
               return 0;
       tmp = strtok(NULL, ">");
   }
   return 1;
}

int main()
{
    char str_one[] = "LOREM>A>IPSUM";
    char str_two[] = "LOREM>B>IPSUM";

    printf("Test one: %d\n", swg(str_one));
    printf("Test two: %d\n", swg(str_two));

    return 0;
}
  

输出:
测试一:0
测试二:1