Linux 倍频程strcat忽略添加的空格
倍频程使用strcat添加空格 在倍频程中,我运行以下命令:Linux 倍频程strcat忽略添加的空格,linux,octave,spaces,strcat,Linux,Octave,Spaces,Strcat,倍频程使用strcat添加空格 在倍频程中,我运行以下命令: strcat ("hel", " ", "lo") 我得到这个结果: ans = hello 而不是我所期望的: ans = hel lo strcat对我来说听起来像“连接字符串”。空格是有效字符,因此添加空格应该可以。Matlab具有相同的行为,因此可能是有意的 我觉得这是违反直觉的。这种行为有意义吗?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保留空白不变 从 因此,问题可能是:这种行为是否应该改变