2014-03-13 87 views
0

我正尝试在用户输入中读取文件名,然后尝试打开指定的文件。我得到的问题是似乎有垃圾字符添加到输入的末尾。 (我尝试printf()userInput变量时发现了这一点)。读取系统调用垃圾字符

if(read(0, userInput, 128) < 0) 
    write(2, "An error occurred in the read.\n", 31); 

任何想法发生了什么问题? 我得到这个代码直接从codewiki 感谢

回答

0

您还没有公布足够的信息来发布一个明确的答案,但这里是我的猜测:

C字符串是空终止。如果您只读取部分字符串并且不终止它,但尝试将其打印为C字符串,则会出现未定义的行为 - 实践中,您会看到后面的垃圾。

+0

好的,这是否意味着我必须在从用户读取后手动添加空字符?我也试过strcat(userInput,“\ 0”),但仍然最终变得垃圾 – user3299369

+0

上面的代码后,我有printf(“CHECK1%s CHECK2”,userInput); printf(“SECOND%s PART”,userInput); 检查它是否正确读取,但最终在打印字符串后(在printf语句中的%s之后)得到那些奇怪的符号 – user3299369

+0

'strcat'只能用于C字符串。 catch-22(顺便说一句,这是没有用的)。 '输入[pos] = 0' –