Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
StrDmVal
0 / 0 / 0
Регистрация: 02.03.2010
Сообщений: 9
#1

Не умею написать "Составное" имя файла - C++

02.03.2010, 08:06. Просмотров 856. Ответов 5
Метки нет (Все метки)

Всем привет!
Я недавно начал программировать и столкнулся с такой проблемой.
В моей работе приходится писать скрипты и программы, использующие множество файлов с практически одинаковыми названиями, на пример:
image0001_F_10.fits,
image0002_F_10.fits,
image0001_v_10.fits,
image0002_v_10.fits,
image0001_v_20.fits,
image0002_v_20.fits
И часто нужно выбрать какую-то группу файлов по определённой частни их имени.

Как же сделать так чтобы имя файла можно было записать скажем так a_b_c._d, где буквы это переменные? Или Как то иначе, но чтобы принцип оставался подобным.

Спасибо.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.03.2010, 08:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не умею написать "Составное" имя файла (C++):

В массиве структур студент с полями "ИМЯ" "ВОЗРАСТ" "УСПЕВАЕМОСТЬ" выполнить сортировку по успеваемости по возрастанию - C++
в массиве структур студент с полями "ИМЯ" "ВОЗРАСТ" "УСПЕВАЕМОСТЬ" выполнить сортировку по успеваемости по возрастанию. Использовать...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно". Я так...

Чтения структуры из файла (описать структуру с именем "ORDER": "счет плательщика"; "счет получателя"; "сумма, переводится банковской операцией") - C++
Описать структуру с именем "ORDER", содержащий следующие поля: "Счет плательщика"; "Счет получателя"; "Сумма, переводится банковской...

Написать функцию поиска человека по полю "фамилия" в массиве структур "Note" ("Персональная информация") - C++
Вывести из структуры информацию о человеке, чья фамилия введена с клавиатуры #include <iostream> #include <locale> #include...

Удалить строку из файла, если имя начинается на букву "А" - C++
Есть файл : имя возраст; имя1 возраст1.... Если имя начинается на букву А удалить строку из файла . Как ето сделать ?

Сформировать имя второго файла из имени первого добавлением текстового постфикса "_comp" - C++
Есть файл с информацией, я ввожу его имя для открытия и дальше работаю с ним. char filename; cout << "Введите имя файла: "; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
02.03.2010, 09:47 #2
C
1
int sscanf(const char *s, const char *format, ...);
это прочитать из строки

C
1
int sprintf(char *s, const char *format, ...);
это записать в строку
2
StrDmVal
0 / 0 / 0
Регистрация: 02.03.2010
Сообщений: 9
02.03.2010, 10:02  [ТС] #3
Ага, понятно. А я вот, пока ждал ещё один способ раскопал.
C++
1
2
3
4
5
6
7
8
9
....    
  char *b;
    char t[]="flat";
    int a=28;
    sprintf(b,"%s_%i.txt", t, a);
    FILE *IT;
    IT=fopen(b,"w");
    fprintf(IT,"We walking in the air");
....
Оказывается и sprintf тоже позволяет подобное.
Если не трудно, кто нибудь подскажите ещё какие-нибудь функции для подобных действий со строками и файлами. Как я понимаю, это классические си-шные функции, а есть ли подобные для с++?
0
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
02.03.2010, 11:13 #4
b должен быть массивом, или указателем на массив
а в том случае это указатель, который указывает куда-то
0
StrDmVal
0 / 0 / 0
Регистрация: 02.03.2010
Сообщений: 9
02.03.2010, 16:09  [ТС] #5
Спасибо, посмотрел про массив, куда sprintf копирует строки. Оказалось, что программа работает даже без явного объявления массива. Прочёл потом, что при объявлении указателя на строку, она сама где-то там в недрах компилятора создаётся))
Меня ещё вот что интересует.
C++
1
// int sscanf(const char *s, const char *format, ...);
Почему в условии написано, что расширение строк const char *, но при попытке задать такое расширение компилятор матерится((( Если просто char * то всё OK.
0
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
03.03.2010, 01:57 #6
Цитата Сообщение от StrDmVal
Почему в условии написано, что расширение строк const char *
потому что строки подаются только для чтения
когда sprintf юзаешь, там наоборот - строка подается как для чтения, так и для записи, поэтому нету const, а вот форматная строка подаётся только для чтения, поэтому там есть

Цитата Сообщение от StrDmVal
Прочёл потом, что при объявлении указателя на строку, она сама где-то там в недрах компилятора создаётся
C
1
char *p = "abcd";
строка "abcd" создаётся
но указатель p никакого отношения к ней не имеет
это просто указатель, в него сразу помещается адрес памяти, где начинается строка "abcd"

поэтом можно сделать и так
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    char *p = "abcd";
    char n[10];
 
    p = &n[0];
 
    sprintf(p, "copy to n[]");
 
    /* а строка "abcd" потеряна,
       указатель с неё переставили на массив n,
       а адрес строки "abcd" не стали сохранять,
       теперь он неизвестен  */
 
    /* p установлен на массив n */
 
    p = NULL;
 
    /* в p поместили нулевой адрес */
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.03.2010, 01:57
Привет! Вот еще темы с ответами:

Написать программу которaя запрашиваeт у пользователя номер дня недели, затем выводит одно из сообщений "рабочий день", "суббота", "воскресенье" - C++
Добрый день необходимо написать несколько программ, кто может помогите. одна тема - одна задача!

Написать программу, которая запрашивает у пользователя номер дня недели и выводит одно из сообщений: "Рабочий день","Суббота" или "Воскресенье" - C++
Написать программу, которая запрашивает у пользователя номер дня недели и выводит одно из сообщений: "Рабочий день","Суббота" или...

Вывести текст файла, заменив цифры от 0 до 9 на слова "ноль", "один"."девять", начиная каждое предложение с новой строки - C++
Написать программу, которая считывает текст из файла и выводит его на экран, заменив цифры от 0 до 9 на слова "ноль", "один"..."девять",...

При сокращении "Фамилия Имя Отчество" к "Фамилия И.О." пропадают "И.О." - C++
Подскажите, в чём может быть ошибка? Процедура сама по себе работает правильно, а в таком виде нет. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
03.03.2010, 01:57
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru