我正在尝试将字符串作为参数传递,但结果总是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)
但它没有用,我怎么能把字符串作为参数传递呢?
答案 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