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

时间:2011-09-10 06:15:54

标签: 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]);


    }



}

1 个答案:

答案 0 :(得分:2)

您的read调用不读取行,它从fd读取最多256个字节。 read也对null终止符一无所知,因此无法保证buffer将保存一个字符串(即具有空终止符),因此无法保证strcpy将停止复制一个明智的地方。你几乎肯定会在你的筹码上涂鸦,一旦你这样做,所有的赌注都会被取消,你不能指望任何明智的事情发生。

如果您想阅读线路,那么您可能需要切换到fgets或继续使用read并找出EOL在哪里。