Создание файлов

Здравствуйте).Проблема возникла в создании файлов,собственно: Есть на входе файл с именем name.С помощью аргументов командной строки должны появится 3 файла но уже с другими расширениями и названиями.например:name - > 1) txt_name.(расширение), test_name.(расширение2) , name.(раширение3)сам синтаксис операции в ком. строке должен быть такой: test(название программы) create name(входной файл)Вот что у меня получается:
#include <iostream>

using namespace std;

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

/*инициализация выходных файлов*/
	FILE* output1=0;
	FILE* output2=0;
	FILE* output3=0;

 int i;

 if( argv[1] == 'create' ) {
 printf("Вы выбрали операцию создания файлов - операция create <filename>");}
 for(i = 1; i < argc; i++)
 if (argv[i]!=3){
 printf("операция create <filename>");
 exit(1);}

 output1 = fopen(argv[i], "r");
 output2 = fopen(argv[i], "r");
 output3 = fopen(argv[i], "r");
 // то считаем что этот параметр - имя файла и пытаемся открыть его

 }
Но тут она выдает ошибки : ISO C++ forbids comparison between pointer and integer в строчках: 1) if( argv[1] == 'create' ) { 2) if (argv[i]!=3){Тут у меня должно создавать 3 одинаковых файла,но как сделать,чтобы имя и расширение у них изменялось? Спасибо за помощь!
4 ответа

И правильно! Вы сравниваете указатель (целое число) и строку. Это разные вещи... Используйте strncmp и ей подобные.


if( argv[1] == 'create' )
строки так сравнивать нельзя, нужно
if( strcmp(argv[1],"create") == 0 )
к тому же строки в С++ пишутся в двойных кавычках. В одинарных пишутся символы.
if (argv[i]!=3)
а это вообще, что?
Тут у меня должно создавать 3 одинаковых файла,но как сделать,чтобы имя и расширение у них изменялось?
Берем имя файла, приклеиваем ему расширение и вызываем fopen с этим именем.
char *fileName = new char[32];
cin.getline(fileName,32, '\n');

char *testFileName = new char[32];
char *txtFileName = new char[32];
char *originalFileName = new char[32];
strcpy(fileName, testFileName);
strcpy(fileName, txtFileName);
strcpy(fileName, originalFileName);

strcat(testFileName, ".test"); //расширение test
strcat(txtFileName, ".txt"); //расширение txt
strcat(originalFileName, "dat"); //расширение dat
Вызываете fopen с каждым из имен и получаете файлы с разным расширением. Только имя файла должно быть без расширения.


вы пытаетесь сравнить указатель типа char и целочисленный тип int. Вместо
1) if( argv[1] == 'create' ) { 
2) if (argv[i]!=3){
нужно написать
if(!strcmp(argv[1], "create")
if(atoi(argv[1])== 5)


if (argv[i]!=3)
ошибся тут if (argc!=3)
char *fileName = new char[32]; cin.getline(fileName,32, '\n');char *testFileName = new char[32]; char *txtFileName = new char[32]; char *originalFileName = new char[32]; strcpy(fileName, testFileName); strcpy(fileName, txtFileName); strcpy(fileName, originalFileName);strcat(testFileName, ".test"); //расширение test strcat(txtFileName, ".txt"); //расширение txt strcat(originalFileName, "dat"); //расширение dat Вызываете fopen с каждым из имен и получаете файлы с разным расширением. Только имя файла должно быть без расширения.
как без расширения то ?))