Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
hyperspace
1

Обработка файла указанного в пути

18.11.2009, 14:17. Показов 1025. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "clanfun.h"
 
void main(int argc, char* argv)
{
    int width, height ;
    int byte ;
    int flen;
    int *mas ;
    int i;
    char* msk = mask;
    char* msk1 = mask1;
    char* msk2 = mask2;
    char* msk3 = mask3;
    char* msk4 = mask4;
    char* msk5 = mask5;
    char* msk6 = mask6;
    struct BMPFHeader FBMP;
    struct BMPInfoHeader IBMP;
    struct RGB *rgb;
    struct HSI *hsi;
    char* name;
    char* name1;
        system("clear");
        [COLOR="Red"]fprintf(stdout,"argc = %d symbols\n", argc);[/COLOR]
        for(i=0;argv[i]!=NULL;i++)
        {
            [COLOR="Red"]fprintf(stdout,"%c", argv[i]);[/COLOR]
        }
        [COLOR="SeaGreen"] name = "/home/alexey/nissan_GT-R"; [/COLOR] // Имя обрабатываемого файла
    byte = 0;
    if(BMPInfo(&FBMP, &IBMP, name)!=0)
    {
       fprintf(stdout,"Type = %c%c\n", (FBMP.Type)>>8,(FBMP.Type)&255);
        fprintf(stdout,"filesize = %.2lf kB\tData begin at %d byte\nPictureSize = %dx%d pixels\n", (FBMP.Size)/1024.,
            FBMP.OffBits,IBMP.Width,IBMP.Height);
        fprintf(stdout,"Planes = %d\tBitCount = %d\n",IBMP.Planes, IBMP.BitCount );
        fprintf(stdout,"Compression = %d\tSizeImage = %.2lf kB\n",IBMP.Compression, IBMP.SizeImage/1024. );
        fprintf(stdout,"XPelsPerMeter = %d\tYPelsPerMeter = %d\n",IBMP.XPelsPerMeter, IBMP.YPelsPerMeter );
        fprintf(stdout,"ClrUsed = %d\tClrImportant = %d\n",IBMP.ClrUsed, IBMP.ClrImportant );
        byte = 1;
    }
    else
    {
        fprintf(stdout,"this is not BMP file\n");
        exit(1);
    }
    if(byte == 1)
    {
      mas = malloc(4*IBMP.Width*IBMP.Height) ;
      if(mas == NULL)
      {
        fprintf(stdout,"No free memory\n");
        exit(1) ;
      }
      ReadImage(&FBMP, &IBMP, mas, name);
      rgb = malloc(3*IBMP.Width*IBMP.Height);
      hsi = malloc(3*8*IBMP.Width*IBMP.Height);
      if(rgb == NULL)
      {
        fprintf(stdout,"No free memory\n");
        exit(1) ;
      }
      IntToRGB(rgb,mas,IBMP.Width*IBMP.Height);
          Negative(rgb,IBMP.Width*IBMP.Height);
      RGBToHSI(rgb, hsi, IBMP.Width*IBMP.Height);
          Filter(hsi,&IBMP, 1, msk5);
          Filter(hsi,&IBMP, 20, msk);
          HSIToRGB(rgb, hsi, IBMP.Width*IBMP.Height);
          RGBToInt(rgb,mas,IBMP.Width*IBMP.Height);
          name1 = "/home/alexey/nissan_GT-R_1.bmp";
      WriteImage(&FBMP, &IBMP, mas, name1, name);
      free(mas);
      free(rgb);
      free(hsi);
      
    }
        
}
Требуется:
1. Обработка файла указанного в пути, например
./programm filter_type name_file_in name_file_out
Получается, что данный исходный код может позволить лишь обработку отдельных символов через пробел, но не путь к файлу как строку
Пример вывода:
./tblet /home/user_name/machine.bmp /home/user_name/machine_1.bmp

C
1
2
3
4
5
6
7
8
9
argc = 2 symbols
 
w��w��Type = BM
filesize = 5168.02 kB   Data begin at 54 byte
PictureSize = 1680x1050 pixels
Planes = 1  BitCount = 24
Compression = 0 SizeImage = 5167.97 kB
XPelsPerMeter = 2835    YPelsPerMeter = 2835
ClrUsed = 0 ClrImportant = 0
Получается, что в параметр argv[] попадает только первый символ из командной строки и ".".
Причем если ставить пробел после каждого символа все нормально. Как можно обойти такой кривой способ передачи параметров?
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.11.2009, 14:17
Ответы с готовыми решениями:

Открытие Word файла из указанного пути
Подскажите, может кто то уже делал открытие Word файла из указанного пути. Добавлено через 2...

Копирование файла, указанного первым аргументом, в папку, часть пути к которой указана вторым аргументом
Добрый день. Есть два задания из лабораторной работы. Я бы с радостью их сделал где угодно, кроме...

Поместить картинку в DrawGrid из указанного пути
Всем доброго дня. Имеется папка с картинками (50х50). Каждой картинке соответствует свой номер...

Как получить родительский каталог относительно указанного пути
Как организовать обратный переход по папкам в С#? Например: 2 папка лежит в первой, мне необходимо...

1
Эксперт С++
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
19.11.2009, 14:13 2
argv - равняется кол-ву слов в командной строке разделенными пробелом
0
19.11.2009, 14:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.11.2009, 14:13
Помогаю со студенческими работами здесь

Как прочитать многострочные данные из файла с указанного фрагмента до указанного фрагмента?
Всех с наступающим! Есть файл с содержанием: Database: vip_stroitel Table: material ...

Запуск bat-файла из vbs-файла от имени указанного пользователя
Здравствуйте форумчане, натолкните пожалуйста как можно реализовать выполнение bat файла такого...

Ни одна программа не устанавливается пишет "указанного пути не существует"
Проблема в следующем, ни одна программа не устанавливается пишет &quot;указанного пути не существует&quot;,...

TASM. Копирование указанного файла (имена исходного и результирующего файла задаются в командной строке)
Нашел программу, но не смог добиться работы от нее. Описание: Пример программы (в формате DOS...

Добавить в указанное место файла заданное количество строк, начиная с указанного места другого файла
Добавить в указанное место файла заданное количество строк, начиная с указанного места другого...

Добавить в указанное место файла заданное количество записей, начиная с указанного места другого файла
помогите сделать . Добавить в указанное место файла заданное количество записей, начиная с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru