基本上对于我的代码,我有变量/密钥对。当在代码中遇到一个变量时,一个函数(包含下面的部分行),它被替换为它的键。例如,如果用户输入字符串“Hello ABC World”并且变量声明为 ABC = “Great Big”,则输入字符串将更改为“Hellow Great Big World”。我通过 strtok'ing 变量之前和变量之后的字符串部分来完成此操作,然后连接 newfirst(变量之前的部分)+ 变量键 + newsecond(变量之后的部分)。在大多数情况下,这很好用,除非变量位于字符串“Hello World ABC”的末尾。因此留下我认为是单个字符'\ n',并抛出错误,因为它无法标记剩下的内容。
// Place the part of the string before the variable prescence in newfirst
strcpy(newfirst, strtok(nonVariable[i], myVariables[a].variable));
// Place the part of the string after the variable prescence in newsecond
for(c = 0; c < strlen(newsecond); c++)
{
if(newsecond[c] == ' ')
hasSpaces = 1;
}
if(hasSpaces = 0)
{
strcpy(newsecond, strtok(NULL, "\n"));
}
else
{
strcpy(newsecond, strtok(NULL, " "));
strcpy(newsecond, strtok(NULL, "\n"));
}
// substitute all key values in for their corresponding variables
strcat(newfirst, " ");
strcat(newfirst, myVariables[a].key);
strcat(newfirst, " ");
strcat(newfirst, newsecond);
strcpy(nonVariable[i], newfirst);