使用read()并将缓冲区放入字符串中

时间:2011-12-26 16:29:19

标签: c strtok strcpy atoi

这是我的第二个问题,因为我遇到了第一个问题,因为这个问题。 我有一个文件,我必须使用read()语句,没有没有fget()或fread()等 我用这条线。

read(fileRead, buffer, blocksize);

你知道fileRead是我的filedescriptor,buffer是unsigned char,blocksize是buffer的大小(我选择了32); 我的问题是我有一个循环,它运行直到文件结束并获取文件的缓冲区(32),我需要把它放入一个字符串。

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

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 ++;
}

谢谢

1 个答案:

答案 0 :(得分:0)

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

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

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