2017-10-08 66 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解释说:

有与我如何申报结果的问题。它正在工作。