我已经在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语言中,最简单的方法是将数据转换为可以尽快使用的格式,而不是尝试进行繁重的文本操作.
为什么不strtok()
直接使用?无需修改输入
所有你需要做的就是重复,strtok()
直到你获得3个非空间代币,然后你就完成了!