我尽量不使用 isSpace
函数,所以唯一想到的是 strcpy
但我收到错误
while ( walker > 0 && strcmp(a[walker - 1],space_const) )
Warning 86: argument 1 conflicts with formal definition
有人知道如何解决这个问题吗? space_const
是一个 char
初始化为 ""
char* strTrim(char* string)
{
char* a= string;
char delims[3];
char space_const[] =" ";
char syntax_const[]=" \t\n\v";
size_t walker = strlen ( a );
strcpy(delims,space_const);
/* Trim trailing spaces */
while ( walker > 0 && strcmp(a[walker - 1],space_const) )
--walker;
a[walker] = '\0';
/* Trim leading spaces */
walker = strspn ( a,syntax_const);
memmove ( a, a + walker, strlen ( a + walker ) + 1 );
return extractCmd(a ,space_const );
}
最佳答案
你正在尝试比较一个字符(小整数)和一个字符串。
char* a= string;
/*... */
strcmp(a[walker - 1], space_const);
^ character
strcmp
看起来像这样
int strcmp(const char *s1, const char *s2);
^ string ^ string
您可能想要这样的东西:
(a[walker - 1] == ' ' || a[walker - 1] == '\t' || ..)
你应该写一个函数。但是你最终会重写isspace
。
为什么你不能首先使用 isspace
?
关于c - strcmp 参数类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6903397/