我正在尝试制作一个简单的客户端和服务器。现在我可以将文件的内容打印到屏幕上。我现在想将从缓冲区读取的每一行存储到一个数组中。我已经尝试过这样做,但由于某种原因,它总是只添加从缓冲区接收到的最后一行。谁能指出我哪里出错了
int getFile (char path[256], int fd)
{
char buffer[256];
char bufferCopy[256];
char arguments[1000][1000];
int total = 0;
char * ptr;
while(read(fd, buffer, 256) != NULL)
{
char * temp;
strcpy(arguments[total], buffer);
total++;
}
for(int i = 0; i < total; i++)
{
printf("\n %s", arguments[i]);
}
}
最佳答案
您的 read
call 不读取行,它从 fd
读取最多 256 个字节。 read
也不知道有关空终止符的任何信息,因此不能保证 buffer
将保存一个字符串(即有一个空终止符),因此不能保证 strcpy
将在合理的地方停止复制。几乎可以肯定,你在筹码上乱写乱画,一旦你这样做了,所有的赌注都会消失,你不能指望发生任何明智的事情。
如果您想阅读行,那么您可能需要切换到 fgets
或继续使用read
并找出您自己的 EOL 位置。
关于c - 从缓冲区读取并将该行存储在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7370002/