我尝试解析输入并将它们存储在字符串数组中。因此,如果用户输入{" hello world | foo bar"}我根据空间进行解析,如果有的话或者我存储空值。一旦我完成解析并想要使用以下方法检查存储的令牌:
while(i < j) {
printf("%s\n", args[i]);
i++;
}
输出类似于
hello
world
(null)
foo
bar
(null)
那么这个差距是什么?
答案 0 :(得分:0)
首先,您需要确保测量输出而不是输入和输出。最简单的方法是将输出重定向到文件。假设您的程序名称是“a.out”
a.out > output.txt
或等效文件将为您提供仅包含输出的文件。如果它与您发布的内容完全相同,那么您知道它不是您的控制台/终端尝试绘制您正在键入的回车符和换行符,它是控制台尝试绘制回车符和换行符程序正在打印出来。
一旦你很好地掌握了哪个输入/输出流正在打印什么,那么请记住,如果args[i]
包含\n
换行符,它就会打印出来,就好像它包含了hello
。您可能需要搜索换行符的来源,并在那里进行更正。一种简单的方法是在args[i]
匹配不良文本时禁止打印;然而,在非玩具程序中通常要避免使用这种技术,因为它最终会在变量中允许不良数据,这意味着随着时间的推移变得更加困难(如果不是不可能的话)。