Я читаю C primer Plus 5th edition, и я вхожу в раздел ввода/вывода. Я придумываю пример (стр. 451), который делает некоторые вещи, и в какой-то момент он создает новый файл, названный в честь существующего файла, но с окончанием .red. Например, если у меня есть этот файл «test», программа создает «test.red». Я не могу понять следующее.Назовите файл с тем же именем другого файла
char name[LEN];
//some code...
strncpy(name,argv[1], LEN - 5);
name[LEN - 5] = '\0';
strcat(name,".red");
Я посмотрел определение команды strcpy. Он копирует первые символы LEN-5 из arv [1] (содержит исходный файл) в имя. Команда strcat добавляет .red в конец. Однако я не могу понять существование этого name[LEN - 5] = '\0';
. Я удалил его, и программа все еще работает хорошо.
EDIT
я отправляю комментарий из книги для этих линий ..
Чтобы построить новое имя для выходного файла, программа использует strncpy(), чтобы скопировать имя вихревым во имя массива. Аргумент LEN - 5 оставляет место для суффикса .red и конечного символа null. Никакой нулевой символ не копируется, если строка argv [2] длиннее LEN - 5, поэтому программа добавляет нулевой символ на всякий случай. Первый нулевой символ имени после вызова strncpy() перезаписывается периодом в .red, когда функция strcat() добавляет эту строку, , производя в этом случае eddy.red.
Понял это! Спасибо! – yaylitzis