0

这是我的第二个问题,因为由于这个问题,我在第一个问题上遇到了麻烦。我有一个文件,我必须使用 read() 语句读取,没有 fget() 或 fread() 等我使用该行。

read(fileRead, buffer, blocksize);

如您所知,fileRead 是我的文件描述符,buffer 是无符号字符,blocksize 是缓冲区的大小(我选择了 32);我的问题是我有一个循环,它一直运行到文件结束并获取文件的缓冲区(32),我需要将其放入字符串中。

所以我想知道你是否可以帮助我处理将缓冲区并将其附加到字符串的代码行(不是二维数组,这不会很好)我​​试过了

openCopyClose(int argc, char ** argv)
{
    int i=0,j=0, k=0, count = 0;
    size_t blocksize = 32;
    char fromFile[256], newFile[1000][100], string[100000];
    int fileRead;
    unsigned char buffer[blocksize];
    ssize_t status;

    strcpy(fromFile, argv[1]);

    fileRead = open(fromFile, O_RDONLY);  // open for reading

    status = 99;
    while (status > 1)        //while not EOF or error
    {
        status = read(fileRead, buffer, blocksize);
        strcpy(newFile[i], buffer);

        for(count = 0; count<= 32; count++)
        {
            buffer[count] = 0;
        }
        i ++;                   

        if(status < 0)
        {
            printf("oops2\n");
            exit(1);
        }

    }
    printf("\n");

    for(j = 0; j < i; j++)
    {
        printf("%s", newFile[j]);
    }          
    close(fileRead);

}

但是当我尝试将它放在一个结构中时,这将不起作用。我需要使用 read() 将该文件放入一个字符串中有什么想法吗?

之后我的 strtok 代码将需要看起来像这样

struct processStruct processes[700];
while(count < 701)
{

    processes[count].processNumber = strtok(newFile[0], " \n");
    processes[count].quanta = atoi(strtok(NULL, " \n"));
    processes[count].priority = atoi(strtok(NULL, " \n"));

    count ++;
}

谢谢你

4

1 回答 1

0

我解决了如何将文件放入字符串,它相对简单,我很惊讶我错过了

for(k =0; k < sizeof(buffer); k++)
{
    newFile[i] = buffer[k];
    i++;
 }

现在把它放在结构中.....

于 2011-12-27T13:00:01.550 回答