2011-09-10 123 views
0

我试图制作一个简单的客户端和服务器。现在我可以将文件的内容输出到屏幕上。现在我想将从缓冲区读取的每一行存储到一个数组中。我试图这样做,但由于某些原因,它总是只添加从缓冲区接收到的最后一行。任何人都可以指出我在那里出了错从缓冲区中读取数据并将其存储在数组中

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


    } 



} 

回答

2

read通话不读的线条,它读取多达来自fd 256个字节。 read也不知道有关空终止符的任何信息,所以不能保证buffer将保存一个字符串(即有一个空终止符),因此不能保证strcpy将停止在明智的地方复制。你几乎肯定会在你的筹码上乱涂乱画,一旦你这样做了,所有的投注都会关闭,你不能指望任何明智的事情发生。

如果你想读取线条,那么你可能想切换到fgets或继续使用read并找出EOL是你自己的。

+1

你的while的顶部还可以使用if(total> = 1000)break;避免超出内存。 – Gilbert

+0

@吉尔伯特:是的,也是。 –

相关问题