c - 为什么打印语句之间有间隙?

标签 c string parsing

我正在尝试解析输入并将它们存储在字符串数组中。因此,如果用户输入 {"hello world | foo bar"} 我会根据空格以及是否有 | 进行解析或 eof 我存储一个 null。一旦我完成解析并想使用以下方法检查存储的 token :

while(i < j) {
    printf("%s\n", args[i]);
    i++;
}

输出类似于

hello
world
(null)
foo

bar
(null)

那么这个差距是怎么回事?

最佳答案

首先,您需要确保您真正测量的是输出,而不是输入和输出的组合。最简单的方法是将输出重定向到文件。假设你的程序名称是“a.out”

 a.out > output.txt

或等效的内容将为您提供一个仅包含输出的文件。如果它与您发布的内容完全相同,那么您就知道这不是您的控制台/终端试图绘制您正在键入的回车符和换行符,而是控制台试图绘制回车符和换行符程序正在打印。

一旦您很好地掌握了哪个输入/输出流正在打印什么内容,请记住 if args[i]包含 \n换行符,它将打印出来,就像它包含单词 hello 一样。您可能必须寻找换行符的来源,并在那里纠正它。一个简单的方法是抑制打印 if args[i]匹配不需要的文本;然而,在非玩具程序中通常要避免这种技术,因为它最终会导致变量中存在错误数据,这意味着随着时间的推移,维护变得更加困难(如果不是不可能的话)。

关于c - 为什么打印语句之间有间隙?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29190635/

相关文章:

c++ - 在 C/C++ 中覆盖符号

python - 在Python中比较两个字符串

objective-c - 通过将另一个字符串重复给定次数来创建 NSString

java - 10秒的滑动窗口?

java - 使用正则表达式提取两个标签之间的文本

html - Facebook 如何知道要从文章中解析出什么图像?

java - 我怎样才能解析这种文本?

c++ - C/C++ 函数定义

c - 处理结构体c

c - 从多项式中提取幂