0

基本上对于我的代码,我有变量/密钥对。当在代码中遇到一个变量时,一个函数(包含下面的部分行),它被替换为它的键。例如,如果用户输入字符串“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); 
4

1 回答 1

1

您可以将带有多个字符的分隔符字符串提供给strtok()

ptr = strtok(NULL, " \n\t");

man strtok

于 2012-11-14T07:23:42.987 回答