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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.03.2013, 21:24   #1
FelMefisto
 
Регистрация: 22.03.2013
Сообщений: 5
Восклицание Не знаю Побитовое Копирование с вводом адреса файла с консоли .

В общем дела обстоят так :
В Университете дали такое задание "Сделать программу побитового копирования файла , адрес файла задать с консоли . "

Проблема в том что нам так и не объяснили как задать адрес файла ...
и мы ни разу такое не делали .
Алгоритм копирования очень прост .
Код:
Код:
#include <iostream>
#include <cstdio>
using namespace std;

int main ()
{
	int a;	
	FILE *fi;
	FILE *fo;


	fo=fopen("d:/TEXT1.rar","wb");

	if((fi=fopen("d:/text.rar", "rb"))==NULL)
	{
		printf("NET");
	}

	do
	{
		a=fgetc(fi);
		putc(a,fo);
	} while (a!=EOF);

	
	fclose(fi);
	fclose(fo);

	
	return 0;
}
Очень прошу помогите .... Подскажите какую литературу почитать , но не помешало бы и доделать .. так как я попросту не успею .. завтра надо сдать .

Последний раз редактировалось Stilet; 24.03.2013 в 22:02.
FelMefisto вне форума Ответить с цитированием
Старый 24.03.2013, 22:07   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
побитового копирования
Это невозможно )
Над тобой прикололись. Максимум что:
Код:
	do
	{
		a=fgetc(fi);
                char c=0; for(int i=0,k=1;i<8;i++){ c=c | (a & k); k=k << 1; }
		putc(c,fo);
	} while (a!=EOF);
Но это глупо...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.03.2013, 22:07   #3
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Как вариант:
Код:
#include <iostream>
#include <cstdio>
using namespace std;

int
main(int argc, char *argv[])
{
    if(argc != 3) {
        printf("You does not input file paths\n");
        return 0;
    }

    int a;
    FILE *fi;
    FILE *fo;


    fo = fopen(argv[2], "wb");

    if((fi = fopen(argv[1], "rb")) == NULL)
    {
        printf("NET\n");
        return 0;
    }

    do
    {
        a = fgetc(fi);
        putc(a,fo);
    } while (a != EOF);

    fclose(fi);
    fclose(fo);

    return 0;
}
Для запуска вводите в командной строке имя ехе файла и 2 пути к файлам.
ПС Stilet прав, это не побитовое копирование (а побайтовое).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 24.03.2013, 22:15   #4
FelMefisto
 
Регистрация: 22.03.2013
Сообщений: 5
По умолчанию

Извините немного ошибся (
BDA Благодарю ) Вы меня спасли ну и не только меня )
FelMefisto вне форума Ответить с цитированием
Старый 24.03.2013, 22:19   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

FelMefisto, пожалуйста.
Надеюсь, Вы поняли, как нужно запускать программу.
Есть еще вариант, чтобы пути запрашивала сама программа, а не получала через параметры вызова.
Код:
#include <iostream>
#include <cstdio>
#include <limits.h>

using namespace std;

int
main()
{
    int a;
    FILE *fi;
    FILE *fo;
    char in[PATH_MAX], out[PATH_MAX];
    printf("Vvedite puth otkuda kopirovat: ");
    gets(in);
    printf("Vvedite puth kuda kopirovat: ");
    gets(out);

    fo = fopen(out, "wb");

    if((fi = fopen(in, "rb")) == NULL)
    {
        printf("NET\n");
        return 0;
    }

    do
    {
        a = fgetc(fi);
        putc(a, fo);
    } while (a != EOF);

    fclose(fi);
    fclose(fo);

    return 0;
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 24.03.2013 в 22:23.
BDA вне форума Ответить с цитированием
Старый 24.03.2013, 22:24   #6
FelMefisto
 
Регистрация: 22.03.2013
Сообщений: 5
По умолчанию

Как запустить я как бы знаю .
Но второй вариант думаю намного лучше будет )
Еще раз спасибо )


Но почему то она выдает error "C2065: 'PATH_MAX' : undeclared identifier"
FelMefisto вне форума Ответить с цитированием
Старый 24.03.2013, 23:32   #7
FelMefisto
 
Регистрация: 22.03.2013
Сообщений: 5
По умолчанию

BDA кстати можете посоветовать какую нибудь литературу чтоб в этом разобраться ...
FelMefisto вне форума Ответить с цитированием
Старый 24.03.2013, 23:46   #8
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Насчет PATH_MAX - попробуйте #include <linux/limits.h> или просто напишите #define PATH_MAX 4096 (тогда не нужно limits подключать).
Литературу не могу посоветовать (не читаю) - хватает лекций и гугла.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 24.03.2013, 23:50   #9
FelMefisto
 
Регистрация: 22.03.2013
Сообщений: 5
По умолчанию

BDA Премного благодарен )
FelMefisto вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтения адреса из файла и запись в указательную переменную Anthoni Общие вопросы C/C++ 2 04.12.2012 00:32
Посимвольное считывание из файла. Проблема кодировки. Кириллица в консоли. SrgGld Общие вопросы C/C++ 0 16.11.2010 20:34
Копирование части экрана консоли в C# Skrutik Общие вопросы .NET 3 03.03.2009 19:13
Копирование email адреса из строки NooDle Microsoft Office Excel 5 27.01.2009 12:33
Указание точного адреса файла на диске Vladya Помощь студентам 4 04.11.2008 20:48