gpt4 book ai didi

c - 从缓冲区读取并将该行存储在数组中

转载 作者:行者123 更新时间:2023-11-30 14:27:44 24 4
gpt4 key购买 nike

我正在尝试制作一个简单的客户端和服务器。现在我可以将文件的内容打印到屏幕上。我现在想将从缓冲区读取的每一行存储到一个数组中。我已经尝试过这样做,但由于某种原因,它总是只添加从缓冲区接收到的最后一行。谁能指出我哪里出错了

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com