0

试图弄清楚下一个功能的确切目的是什么?

我知道它正在对字符串进行一些操作 - 获取 char 指针 - 命令,检查是否有空格或制表符空间......但最后我不明白这个函数在做什么?

void FixCommand(char* command)
{
    char newCommand[MAX_COMMAND_SIZE + 1];
    char* currChar = command;
    int lastConfirmed = 0;
    int inputIndex = 0;
    while ((*currChar == ' ') || (*currChar == '\t'))
    {
        ++currChar;
    }
    while (*currChar != 0)
    {
        if (*currChar != '\n')
        {
            newCommand[inputIndex] = *currChar;
            ++inputIndex;
            if ((*currChar != ' ') && (*currChar != '\t'))
            {
                lastConfirmed = inputIndex;
            }
        }
        ++currChar;
    }
    newCommand[lastConfirmed] = 0;
    strcpy(command, newCommand);
}
4

1 回答 1

1

程序跳过字符串中的初始空格/制表command符,然后将所有字符复制到newCommand[]中,跳过“换行”\n字符。它还查找command字符串中的中断(空格或制表符),记下它看到的最后一个非空白字符,并标记其位置。最后,command从第一个非空白到最后一个非空白的部分将被复制回command,并\n删除字符。

例如,如果传入的命令字符串如下所示:

"    quick brown\nfox\tjumps over the\tlazy dog\t "

那么输出将如下所示:

"quick brownfox\tjumps over the\tlazy dog"

它的目的可能是在将命令字符串传递给不允许\n和前导/尾随空格的外部系统之前“清理”命令字符串。

于 2013-03-29T11:29:53.443 回答