【发布时间】:2016-01-19 17:11:15
【问题描述】:
我正在尝试编写实用程序类型的函数,但不会因为太复杂而无法从分号分隔的字符串中提取值。在此示例中,我尝试提取 X=bc,但在将值分配给 *cpp 时收到的是分段错误
我做错了什么?
int main()
{
char x[500]="a;X=bc;def;ghi";
char* cp=x,*cpp;
while ((cp=strstr(cp,";")))
{
cp++;
if ((*cp)=='X' && (*cp+1)=='=')
{
cp+=2;
break;
}
}
if ((cpp=strstr(cp,";")))
{
*cpp='\0';
}
printf("'%s' '%s'\n",x,cp);
return 0;
}
【问题讨论】:
-
因为你只想要 一个 char,所以使用 strchr(cp,';') 而不是 strstr(cp,";")。它要快得多。