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

标签 c arrays store

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

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/

相关文章:

ios - 将 Array 与 Osmosis 结合使用

windows - 将 Delphi EXE 发布到 Windows 应用商店

php - 没有数据库存储数据?

c - 捕获未初始化的指针

javascript - 如何将 PHP JSON 转换为 JS 数组

python - 无法将 DICOM 的图像数据输入图像数据生成器

php - 存储敏感数据的最佳方式

c - fabs 与 fabsl,我是否必须在源代码中输入 fabsl?

您可以在 C 语言的 switch 语句中的 case 中使用 while 循环吗?

c - fork() 如何以及为什么会失败?