C 字符串操作,下面的函数做什么?
试图弄清楚下一个函数的确切目的是什么 我知道它是在操作字符串-获取字符指针-命令, 正在检查是否有空格或制表符空格。。。但最后我不明白这个函数在做什么C 字符串操作,下面的函数做什么?,c,string,C,String,试图弄清楚下一个函数的确切目的是什么 我知道它是在操作字符串-获取字符指针-命令, 正在检查是否有空格或制表符空格。。。但最后我不明白这个函数在做什么 void FixCommand(char* command) { char newCommand[MAX_COMMAND_SIZE + 1]; char* currChar = command; int lastConfirmed = 0; int inputIndex = 0; while ((*curr
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);
}
程序跳过
命令
字符串中的初始空格/制表符,然后将所有字符复制到newCommand[]
,跳过“新行”\n
字符。它还查找命令
字符串中的换行符(空格或制表符),记下它看到的最后一个非空字符,并标记其位置。最后,将命令中从第一个非空到最后一个非空的部分复制回命令中,并删除\n
字符
例如,如果传入的命令字符串如下所示:
" quick brown\nfox\tjumps over the\tlazy dog\t "
"quick brownfox\tjumps over the\tlazy dog"
然后输出将如下所示:
" quick brown\nfox\tjumps over the\tlazy dog\t "
"quick brownfox\tjumps over the\tlazy dog"
它的目的可能是在将命令字符串传递到不允许使用\n
和前导/尾随空格的外部系统之前对其进行“清理”。当您写入“\n”时,您是指新行吗?@Yuval是的,\n
表示C中的“新行”字符。但是如果我使用此字符串操作函数:“hello\nworld”它将占用第一个空格,并且不处理中的“\n”middle@Yuval这不是我所看到的:“\n
被删除,这是应该的。@Yuval您是在命令行上传递字符串,还是从C代码传递字符串?\n
序列仅在编译代码中成为单个“新行”字符;在命令行上,它保留两个字符-\和n。