为什么打印报表之间存在差距?

时间:2015-03-22 03:28:51

标签: c string parsing

我尝试解析输入并将它们存储在字符串数组中。因此,如果用户输入{" hello world | foo bar"}我根据空间进行解析,如果有的话或者我存储空值。一旦我完成解析并想要使用以下方法检查存储的令牌:

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

输出类似于

hello
world
(null)
foo

bar
(null)

那么这个差距是什么?

1 个答案:

答案 0 :(得分:0)

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

 a.out > output.txt

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

一旦你很好地掌握了哪个输入/输出流正在打印什么,那么请记住,如果args[i]包含\n换行符,它就会打印出来,就好像它包含了hello。您可能需要搜索换行符的来源,并在那里进行更正。一种简单的方法是在args[i]匹配不良文本时禁止打印;然而,在非玩具程序中通常要避免使用这种技术,因为它最终会在变量中允许不良数据,这意味着随着时间的推移变得更加困难(如果不是不可能的话)。