【问题标题】:Reading From A Buffer and Storing the line in an array从缓冲区读取并将行存储在数组中
【发布时间】:2011-11-14 06:16:58
【问题描述】:

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

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]);


    }



}

【问题讨论】:

    标签: c arrays store


    【解决方案1】:

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

    如果您想阅读行,那么您可能需要切换到 fgets 或继续使用 read 并找出 EOL 的位置。

    【讨论】:

    • while 的顶部也可以使用 if (total >= 1000) 中断;以避免内存溢出。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-08
    • 2017-01-11
    • 2012-05-22
    相关资源
    最近更新 更多