Вывести переменную в путь создаваемого txt файла - C (СИ)
Формулировка задачи:
Всем доброго времени суток. Вопрос такой - как вывести переменную в путь создаваемого txt файла?
file = fopen("world\\test.txt", "a"); - а мне надо, чтобы имя файла было задана переменной, объявленной и инициализированной выше.
Решение задачи: «Вывести переменную в путь создаваемого txt файла»
textual
Листинг программы
#include <stdio.h> #include <string.h> #define DIR_SEPARATOR "\\" /* char * full_name(const char * path, const char * name, char * buf, size_t len) * принимает указатели на путь и имя файла, указатель на буфер и размер буфера. * Возвращает указатель на склеенную в буфере строку из пути и имени, * вставляя при необходимости между ними разделитель из DIR_SEPARATOR. * если полный путь не помещается в буфер - предыдущее содержимое * сохраняется, функция возвращает NULL */ char * full_name(const char * path, const char * name, char * buf, size_t len) { if ( strlen(path) + ( ( path[strlen(path) - 1] == *DIR_SEPARATOR ) ? 0 : 1 ) + strlen(name) < len ) { sprintf(buf, "%s%s%s", path, ( ( path[strlen(path) - 1] == *DIR_SEPARATOR ) ? "" : DIR_SEPARATOR ), name); return buf; } else return NULL; } int main(void) { char path1[] = "somewhere\\in\\filesystem"; char path2[] = "in\\some\\other\\place\\"; char name[] = "my_cool_file.name"; char buf[BUFSIZ]; printf("Full path #1: %s\n", full_name(path1, name, buf, BUFSIZ)); printf("Full path #2: %s\n", full_name(path2, name, buf, BUFSIZ)); return 0; }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы: stdio.h и string.h
- Определяется константа DIR_SEPARATOR, которая содержит символ, используемый в качестве разделителя директорий.
- Объявляется функция full_name, которая принимает указатели на путь и имя файла, указатель на буфер и размер буфера.
- Внутри функции происходит проверка: если длина пути плюс возможный разделитель плюс длина имени файла меньше размера буфера, то происходит склейка пути и имени файла с помощью функции sprintf.
- Если длина пути плюс возможный разделитель плюс длина имени файла больше или равна размеру буфера, то возвращается NULL.
- В функции main создаются массивы path1, path2 и name, а также буфер buf достаточного размера.
- Вызывается функция full_name с передачей в нее указанных выше аргументов.
- Результат выводится на экран с помощью функции printf.
- Функция main возвращает 0, что означает успешное завершение работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д