c - 从 C 字符串中删除多余的空格?

标签 c string whitespace

我已将几行文本读入 C 字符串数组。这些行有任意数量的制表符或空格分隔的列,我想弄清楚如何删除它们之间的所有额外空格。最终目标是使用 strtok 来分解列。这是列的一个很好的例子:

Cartwright   Wendy    93
Williamson   Mark     81
Thompson     Mark     100
Anderson     John     76
Turner       Dennis   56

如何消除列之间的所有空格或制表符,使输出看起来像这样?

Cartwright Wendy 93

或者,我可以只用不同的字符替换列之间的所有空格以使用 strtok 吗?是这样的吗?

Cartwright#Wendy#93

编辑: 多个很好的答案,但必须选择一个。感谢大家的帮助。

最佳答案

如果我可以表达“你做错了”的意见,为什么不在阅读时消除空格呢?使用 fscanf("%s", string); 读取一个“单词”(非空白),然后读取空白。如果是空格或制表符,请继续读入一“行”数据。如果是换行符,则开始一个新条目。在 C 中,将数据尽快转换为您可以使用的格式可能是最简单的,而不是尝试进行繁重的文本操作。

关于c - 从 C 字符串中删除多余的空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1458131/

相关文章:

c - 在 glib 中向 gprtarray 添加结构元素,但无法检索

java - 用于访问 JDK 8 HotSpot JVM 中的字符串池内容的实用程序

Linux 脚本 : mass rename of files with whitespaces

java - 使用Java复制文件会跳过连续两个空格的文件名

html - 背景图片在移动设备下方留下空白

c - while循环递增和递减

c++ - Linux串口RAW模式

r - 在 r 的列中对齐数据框的字符串

c - 如何使用 sscanf 获取单个字符

c# - ASP.NET Web 控件中的 Html 编码