2014-03-13 165 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' –