это мой второй вопрос, так как у меня были проблемы с первым из-за этой проблемы.
У меня есть файл, который я должен прочитать, используя чтение (), нет никаких 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 ++;
}
спасибо