2017-10-08 72 views
0

我正在讀取文件並將所有內容保存在名爲buff的變量中。如果我使用printf打印出buff,它會打印出一切正常。我試過將result與其他字符串/字符串變量連接起來,它工作得很好。但只要我strcat/strncat buffresult,它進入一個永無止境的循環(它不打印任何東西,程序永遠不會結束)。我不知道爲什麼。從文件中讀取strcat中的一個變量C

read(fd[0], buff, 1000); 
strcat(result, buff); 

我已經試過這是很好,但沒有運氣

int n = read(fd[0], buff, 1000); 
strncat(result, buff, n); 

而這樣一來,

read(fd[0], buff, 1000); 
strncat(result, buff, sizeof(buff)); 
+1

strncat的第一個參數是目標緩衝區,所以第三個參數應該從它的大小而不是源的大小派生(如你在第三個例子中所做的那樣)。 – itdoesntwork

+0

我曾嘗試將緩衝區大小作爲第三個參數。它仍然不起作用。它進入一個永無止境的循環。它不會打印任何內容,程序也不會完成。 –

+1

我們可以看到C源代碼的更完整示例,比如說您在哪裏以及如何聲明結果? – slevy1

回答

0

瞭解更多有關OP的C源代碼是很重要的,例如聲明變量結果的位置和方式。如果在結果被聲明時出現問題,那麼這可能就是代碼行爲異常的原因。

在隨後的評論中,OP解釋說:

有與我如何申報結果的問題。它正在工作。