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

Здравствуйте. Ответьте пожалуйста на пару вопросиков: 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?