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

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

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

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

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

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

Здравствуйте).Проблема возникла в создании файлов,собственно:
Есть на входе файл с именем 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 одинаковых файла,но как сделать,чтобы имя и расширение у них изменялось?
Спасибо за помощь!
Serjuk вне форума Ответить с цитированием
Старый 03.05.2010, 13:29   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

И правильно!
Вы сравниваете указатель (целое число) и строку. Это разные вещи...
Используйте strncmp и ей подобные.
p51x вне форума Ответить с цитированием
Старый 03.05.2010, 13:47   #3
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Цитата:
Код:
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 с каждым из имен и получаете файлы с разным расширением. Только имя файла должно быть без расширения.
MaTBeu вне форума Ответить с цитированием
Старый 03.05.2010, 13:52   #4
sashonk
Форумчанин
 
Регистрация: 26.10.2009
Сообщений: 170
По умолчанию

вы пытаетесь сравнить указатель типа char и целочисленный тип int. Вместо
Код:
1) if( argv[1] == 'create' ) { 
2) if (argv[i]!=3){
нужно написать
Код:
if(!strcmp(argv[1], "create")
if(atoi(argv[1])== 5)
sashonk вне форума Ответить с цитированием
Старый 04.05.2010, 10:15   #5
Serjuk
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 136
По умолчанию

Цитата:
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 с каждым из имен и получаете файлы с разным расширением. Только имя файла должно быть без расширения.
как без расширения то ?))
Serjuk вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание и обработка файлов =\ dima0268 Общие вопросы C/C++ 0 14.12.2009 23:06
создание файлов nosuchathing Общие вопросы C/C++ 2 13.01.2009 17:03
Создание файлов Серега1985 Помощь студентам 4 28.07.2008 22:45
Создание скрытых файлов HunterMan Win Api 1 04.06.2008 04:01
Создание Help файлов Demien Софт 8 24.08.2007 18:00