Использование read () и помещение буфера в строку - PullRequest
0 голосов
/ 26 декабря 2011

это мой второй вопрос, так как у меня были проблемы с первым из-за этой проблемы. У меня есть файл, который я должен прочитать, используя чтение (), нет никаких fget () или fread () и т. Д. я использую линию.

read(fileRead, buffer, blocksize);

где, как вы знаете, fileRead - мой файловый дескриптор, buffer - беззнаковый символ, а blockize - размер буфера (я выбрал 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 голосов
/ 27 декабря 2011

я решил, как поместить файл в строку, это было относительно просто, я удивлен, что пропустил его

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

и теперь, чтобы поместить его в структуру .....

...