Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2010, 18:14   #1
Serjuk
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 136
По умолчанию работа с файлами

Здравствуйте.
Ответьте пожалуйста на пару вопросиков:
1)Как сделать так,чтобы создавался файл путем преобразования имени другого файла, причем тот файл имеет расширение например .h или .cpp
Причем название выходного файла было с "_" (пример входной файл test.cpp - выходной файл one_test.dat).

Код:
int main(int argc,char *argv[])
{
         setlocale(LC_ALL,"Russian");
char str[80];
  int i;

    if( strcmp(argv[1] ,"create" )==0)
   for(i = 0; i < argc; i++)
    if (argc!=3){
        printf("Введите правильно операцию : операция create <filename>");
        exit(1);}


char *fileName = new char[32];
cin.getline(fileName,32, '\n');

char *one_test = new char[32];

strcpy(fileName, one_test);  //выдает ошибку на _
strcat(one_test, ".dat"); //аналогично
При таком коде программа командой C:\путь\программа create test.cpp не создает файл выходной. наверное с расширением что-то нето..

2) вопрос
Удаление этого файла.Правильно ли написано?
Код:
if ( strcmp(argv[1],"delete")==0)

     for (i=0;i<argc;i++)
     if ( argc!=3){
        printf("Введите правильно операцию : операция delete <filename>");
        exit(1);}
 printf("Стереть созданные файлы %s? (Y/N):",argv[1]);
 gets(str);
 if (toupper(*str)=='Y')
 remove(one_test);


if (remove(argv[1])){
     printf("Невозможно удалить файл.\n");
     exit(1);
 }
 return 0;
Ребят,помогите.Буду премного благодарен)
Serjuk вне форума Ответить с цитированием
Старый 05.05.2010, 20:00   #2
ozo
Форумчанин
 
Аватар для ozo
 
Регистрация: 26.04.2010
Сообщений: 328
По умолчанию

Давайте, раз уже тыкнули cin, то будем библиотеку C++ использовать:
Код:
#include <string>
#include <iostream>

int main(){
    std::string fileName;
    // получаем имя файла с .h или .cpp
    std::cin >> fileName;
    std::string::size_type pos = fileName.find(".cpp");
    if( pos == std::string::npos )
	pos = fileName.find(".h");
    if( pos == std::string::npos ){
	std::cout << "Неправильное имя файла\n";
	return 1;
    }

    fileName = fileName.substr( 0, pos );

    fileName = "one_" + fileName + ".dat";
    // создаем файл
}
Дальше не смотрел, извеняйте, нет времени
Используй гугль, будь счастлив
hackme@yandex.ru
Блог об archlinux
ozo вне форума Ответить с цитированием
Старый 06.05.2010, 19:25   #3
Serjuk
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 136
По умолчанию

спасибо) но есть пара вопросов:
1)При таком коде компилятор не выдает ошибку но при наборе в командной строке C:\test create C:\main.cpp файл one_main не создается...или я неправильно набираю команду.
Код:
#include <iostream>
#include <string>

using namespace std;

int main(int argc,char *argv[])
{
         setlocale(LC_ALL,"Russian");




    int i;

    if( strcmp(argv[1] ,"create" )==0)
   for(i = 0; i < argc; i++)
    if (argc!=3){
        printf("Введите правильно операцию : операция create <filename>");
        exit(1);}

std::string fileName;
    // получаем имя файла с .h или .cpp
    std::cin >> fileName;
    std::string::size_type pos = fileName.find(".cpp");
    if( pos == std::string::npos )
	pos = fileName.find(".h");
    if( pos == std::string::npos ){
	std::cout << "Неправильное имя файла\n";
	return 1;
    }

    fileName = fileName.substr( 0, pos );

    fileName = "one_" + fileName + ".dat";
}
и не совсем понимаю код
Код:
std::string::size_type pos  //имена std класса string а дальше :: size_type pos это к чему?
 if( pos == std::string::npos )
	pos = fileName.find(".h");
    if( pos == std::string::npos ){
//не совсем понял . откуда берется npos?
fileName = fileName.substr( 0, pos );
//что делает функция substr и почему 0,pos?
Serjuk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с файлами 4thWing Общие вопросы C/C++ 5 12.04.2010 01:04
Работа с файлами в С серг Общие вопросы C/C++ 9 18.02.2010 19:21
Работа с файлами JamS007 Общие вопросы C/C++ 4 27.06.2009 22:03
Работа с файлами Joxter Помощь студентам 4 08.10.2008 01:17
Работа с файлами. tresh Паскаль, Turbo Pascal, PascalABC.NET 3 05.10.2008 23:32