字符串操作,以下函数有什么作用?

时间:2013-03-29 11:21:01

标签: c string

试图找出下一个功能的目的究竟是什么?

我理解它正在对字符串进行一些操作 - 获取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);
}

1 个答案:

答案 0 :(得分: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和前导/尾随空白的外部系统之前对其进行“清理”。