【发布时间】:2017-05-12 16:15:22
【问题描述】:
第一个 if 条件导致分段错误。我无法真正理解为什么,因为我在其他地方使用了与关系运算符类似的 if 子句。提前感谢您的帮助。
int foo(char *str1,char **str2, char **str3)
{
char *token1;
char *token2;
char *token = strtok(str1, "\"");
int spaces = strcmp(token," ");
int parenthesis = strcmp("{",token);
if((token == NULL) || ((spaces != 0) && (parenthesis != 0)))
{
printf("ERR.\n");
return 0;
}
token = strtok(NULL, "\"");
if(token == NULL)
{
printf("2ERR\n");
return 0;
}
token1= strtok(NULL, "\"");
if(token1 == NULL || strcmp(token1," -> ") != 0)
{
printf("3ERR\n");
return 0;
}
token2 = strtok(NULL, "\"");
return 1;
}
【问题讨论】:
-
这段代码 sn-p 中声明的
parente在哪里? -
name_a和parente定义在哪里?str1传递什么如果是字符串字面量或其他 const 内存,strtok()在尝试将\'0'写入字符串时会出问题。 -
你确定你甚至达到了你的
if声明吗?你是在调试器中运行的吗? -
@Gerhardh Str1 在动态内存中分配。
-
为什么不提供您真正运行的代码?由于您显然为 SO 创建了一些不同的东西,因此您可能很容易错过重要的部分。顺便说一句:您使用令牌而不检查
NULL。
标签: c if-statement segmentation-fault operator-keyword relational