【发布时间】:2019-08-03 07:48:58
【问题描述】:
我有 uni 项目,我需要检查语法是否正确。我得到一个指向字符串的指针,并检查第一个标记是否可以接受。万一没问题,我就往前走。但万一不正常,我需要打印出什么问题。
我所做的是创建一个缓冲区,因为我无法更改原始字符串。
之后我使用strtok 剪切缓冲区,看看我得到的令牌是否可以接受。
char *str = "sz = 12345";
printf("The check of MACRO: %d\n", isMacro(str));
int isMacro(char *str)
{
char buf = NULL;
char *token;
strcpy(&buf,str);
token = strtok(&buf," ");
printf("You here, value token is %s\n",token);
}
我预计 printf 会打印“sz”,但它会打印:
You here, value str is sz<▒R
【问题讨论】:
-
isMacro()未返回值,因此 outprintf()可能会调用未定义的行为。