我有一个程序,我想从字符串中删除空格。我想找到一种优雅的方式来做到这一点,所以我在一个论坛中找到了以下代码(我对其进行了一些更改,以便更好地阅读):
char* line_remove_spaces (char* line)
{
char *non_spaced = line;
int i;
int j = 0;
for (i = 0; i <= strlen(line); i++)
{
if ( line[i] != ' ' )
{
non_spaced[j] = line[i];
j++;
}
}
return non_spaced;
}
如您所见,该函数接受一个字符串,并使用相同的分配内存空间,仅选择非空格字符。有用!
无论如何,根据维基百科,C 中的字符串是“空终止字符串”。我一直这么想,一切都很好。但问题是:我们没有在字符串末尾放置“空字符” non_spaced
。不知何故,编译器知道它以“non_spaced”字符串更改的最后一个字符结束。它是怎么知道的?