Linux 倍频程strcat忽略添加的空格

Linux 倍频程strcat忽略添加的空格,linux,octave,spaces,strcat,Linux,Octave,Spaces,Strcat,倍频程使用strcat添加空格 在倍频程中,我运行以下命令: strcat ("hel", " ", "lo") 我得到这个结果: ans = hello 而不是我所期望的: ans = hel lo strcat对我来说听起来像“连接字符串”。空格是有效字符,因此添加空格应该可以。Matlab具有相同的行为,因此可能是有意的 我觉得这是违反直觉的。这种行为有意义吗?strcat接受输入参数并修剪尾随的空格,但不修剪前导空格。如果将参数作为一个或多个空格传递,则这些空格将折叠为空字符串

倍频程使用strcat添加空格

在倍频程中,我运行以下命令:

strcat ("hel", " ", "lo") 
我得到这个结果:

ans = hello
而不是我所期望的:

ans = hel lo
strcat对我来说听起来像“连接字符串”。空格是有效字符,因此添加空格应该可以。Matlab具有相同的行为,因此可能是有意的


我觉得这是违反直觉的。这种行为有意义吗?

strcat接受输入参数并修剪尾随的空格,但不修剪前导空格。如果将参数作为一个或多个空格传递,则这些空格将折叠为空字符串

这种行为体现了“cellstr”在删除末端空格时的工作方式

围绕1工作

如果您将空格放在“lo”旁边,则它是一个前导空格,不会被删除

strcat ("hel", " lo")

ans = hel lo
围绕第2个问题展开工作

改用cstrcat:

cstrcat("hel", " ", "lo")

ans = hel lo
解决3个问题

使用sprintf,可以比strcat更快

sprintf("%s%s%s\n", "hel", " ", "lo")

ans = hel lo

嗯。它是如何定义的:

strcat删除参数中的尾随空白(单元格数组中除外),而cstrcat保留空白不变

因此,问题可能是:这种行为是否应该改变