Имеется несколько проблем с моей программой копирования, которая создает копию файла, который вводит пользователь.Я решил не использовать структуру (size_t), а только переменные назначенных (int) и (char) типов, поэтому я знаю точное значение байтов для чтения ().то есть я знаю, что начинаю с начала файла и читаю 4 байта (int), чтобы получить значение длины имени файла, которое я использую в качестве размера при следующем чтении ()
Итак, когда я пишу (копирую файл точно содно и то же имя) пользователь ввел файл в выходной файл (скопированный файл) Я записал его в длинную строку, без пробелов, очевидно, просто чтобы сделать его читабельным здесь,
filenamesize filename*
Поэтому, когда я приступил к чтению этих данных, я начинаю с начала файла, используя lseek (), и я знаю, что первые 4 байта (int) - это длина имени файла, поэтому я помещаю это в значение int namelen, используя функцию чтения.,
Моя проблема в том, что я хочу использовать это значение для размера имени файла (первые 4 байта), чтобы объявить мой массив для хранения имени файла с правильной длиной.Как поместить этот массив в read (), чтобы значение read сохранялось внутри указанного массива char, см. Ниже
int namelen; //value read from first 4 bytes of file lenght of filename to go in nxt read()
char filename[namelen];
read(fd, filename[namelen], namelen);//filename should have 'myfile.txt' if user entered that filename
Итак, мой вопрос: как только я прочитаю первые 4 байта из файла, что даст мне длинуимя файла хранится в namelen, затем я хочу прочитать namelen количество байтов, чтобы дать мне имя файла исходного файла, чтобы я мог создать скопированный файл в каталоге?
Спасибо