Работа с файлами

Здравствуйте. Ответьте пожалуйста на пару вопросиков: 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;
Ребят,помогите.Буду премного благодарен)
2 ответа

Давайте, раз уже тыкнули 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"; // создаем файл
}
Дальше не смотрел, извеняйте, нет времени


спасибо) но есть пара вопросов: 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?