我正在尝试解析输入并将它们存储在字符串数组中。因此,如果用户输入 {"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/