0 / 0 / 0
Регистрация: 23.03.2014
Сообщений: 21
1

Передача файлов через параметры функции main

23.03.2014, 13:34. Показов 1966. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Я студент первого курса. У меня возникла проблема при написании программы шифрования Xor алгоритмом, программа работает корректно и все правильно шифрует. Но принимает только файлы у которых имя состоит из одного символа (а,f,1), а при открытии файла (f.txt) выдает ошибку "error opening".
Приходится каждый раз после шифрования расширение файла дописывать вручную.

Помогите пожалуйста устранить проблему.




Вот собственно код программы:
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
#include "stdafx.h"
#include "stdio.h"
#include "iostream"
#include "string.h"
 
void crypt(char n1[], char n2[])
{
int pos=0, lkey; 
int c_key, c; 
 
char key[]="ridersof0the3storm";
FILE *f1, *f2;
if((f1=fopen(n1,"rb"))==NULL) printf("Open error %s \n",n1);
else
 {
     if((f2=fopen(n2,"wb"))==NULL) printf("Error creating file %s",n2);
     else
     {
         lkey=strlen(key);
         while (!feof(f1))
         {c=getc(f1);
         if(pos==lkey)pos=0;
         c_key=key[pos];
         c^=c_key; pos++;
         putc(c,f2);
         }
       fclose(f2);
     }
     fclose (f1);
 }
 
}
 
void compare (char s1[], char s2[])
{char c1, c2; FILE *f1, *f2;
 
if((f1=fopen(s1,"rb"))==NULL) printf("Open error %s \n",s1);
else
{if((f2=fopen(s2,"rb"))==NULL) printf("Open error %s \n",s2);
else
{while(((c1=getc(f1)) !=EOF)& ((c2=getc(f2)) !=EOF))
if (c1 != c2) break;
if (c1==c2)printf ("Files indetical\n");
else printf("Files not indectical\n");
fclose(f2);
}
fclose(f1);
}}
void _tmain(int argc, char *argv[])
{
if (argc<4) {printf("Add parameters to comand line!!! \n");
system ("Pause");}
else 
{printf("Encrypting... \n");    crypt(argv[1],argv[2]);
printf ("Decrypting... \n");crypt(argv[2],argv[3]);
printf ("Compare..\n");
system ("pause");
}}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.03.2014, 13:34
Ответы с готовыми решениями:

Параметры функции main
доброго времени суток! Не могу решить проблему с параметрами функции main. Есть код int _tmain(int...

Параметры функции main
Добрый день. Помогите пожалуйста. Внизу дан код программы, у main есть аргументы argc и argv....

Параметры функции main() в языке C
почему то непечатается значения argv #include&lt;sys/types.h&gt; #include&lt;unistd.h&gt; #include&lt;stdio.h&gt;...

Как задать параметры запуска (аргументы командной строки) функции main?
Как их задать в процессе запуска? т.е. пользователь запускает приложение и указывает параметры...

17
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
23.03.2014, 13:47 2
Что-то непонятное у вас... Покажите ввод в командной строке, и скрин содержимого папки с файлами.
Миниатюры
Передача файлов через параметры функции main  
1
0 / 0 / 0
Регистрация: 23.03.2014
Сообщений: 21
23.03.2014, 14:13  [ТС] 3
Вот скрин содержимого папки с программой и файла run.bat
Миниатюры
Передача файлов через параметры функции main  
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
23.03.2014, 14:28 4
В консоли ввода не вижу. Без bat сделайте и покажите скрин ввода.
1
0 / 0 / 0
Регистрация: 23.03.2014
Сообщений: 21
23.03.2014, 14:35  [ТС] 5
Вот
Миниатюры
Передача файлов через параметры функции main  
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
23.03.2014, 14:47 6
Файлы file2.txt и file3.txt в папке появляются?
0
0 / 0 / 0
Регистрация: 23.03.2014
Сообщений: 21
23.03.2014, 14:55  [ТС] 7
Нет не появляются,как будто программа ищет в папке не файл "file1.txt", а "f". Когда переименовываю в "1" без расширения .txt а остальные файлы ввожу как "2" и "3" все работает но потом чтобы просмотреть результат надо дописывать расширение.
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
23.03.2014, 14:57 8
Попробуйте в двойные кавычки имена файлов заключить.

Добавлено через 1 минуту
Цитата Сообщение от lischun Посмотреть сообщение
Нет не появляются,как будто программа ищет в папке не файл "file1.txt", а "f".
Не появляются, а ошибки создания не выдаёт. Не пойму в чём тут дело. Видимость расширений файлов в системе включена?
0
0 / 0 / 0
Регистрация: 23.03.2014
Сообщений: 21
23.03.2014, 14:57  [ТС] 9
Тот же результат что на скрине выше.
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
23.03.2014, 15:02 10
Цитата Сообщение от lischun Посмотреть сообщение
Когда переименовываю в "1" без расширения .txt а остальные файлы ввожу как "2" и "3" все работает
Если без расширения, но не из одной буквы?

Добавлено через 1 минуту
???
Цитата Сообщение от alsav22 Посмотреть сообщение
Видимость расширений файлов в системе включена?
0
0 / 0 / 0
Регистрация: 23.03.2014
Сообщений: 21
23.03.2014, 15:05  [ТС] 11
С буквами тоже работает (файлы с названием типа "а" "b" "c").
А отображения расширений включено.
Миниатюры
Передача файлов через параметры функции main  
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
23.03.2014, 15:06 12
Цитата Сообщение от lischun Посмотреть сообщение
С буквами тоже работает (файлы с названием типа "а" "b" "c").
Если файлы без расширения, имя из нескольких букв?
1
0 / 0 / 0
Регистрация: 23.03.2014
Сообщений: 21
23.03.2014, 15:10  [ТС] 13
Не работает, опять видит только первую букву.
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
23.03.2014, 15:17 14
Лучший ответ Сообщение было отмечено lischun как решение

Решение

В свойствах проект, Свойства конфигурации, Общие, Набор символов, что стоит?

Добавлено через 1 минуту
Кажется понял. Вот так main() сделайте:
C++
1
void main(int argc, char *argv[])
1
0 / 0 / 0
Регистрация: 23.03.2014
Сообщений: 21
23.03.2014, 15:21  [ТС] 15
А чем моя функция main отличается? только названием _tmain
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
23.03.2014, 15:23 16
Цитата Сообщение от lischun Посмотреть сообщение
А чем моя функция main отличается? только названием _tmain
Вы сначала сделайте, а потом поговорим.
???
Цитата Сообщение от alsav22 Посмотреть сообщение
В свойствах проект, Свойства конфигурации, Общие, Набор символов, что стоит?
1
0 / 0 / 0
Регистрация: 23.03.2014
Сообщений: 21
23.03.2014, 15:25  [ТС] 17
спасибо заработало, но хочу знать причину почему не работало до етого?
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
23.03.2014, 15:28 18
http://stackoverflow.com/quest... -main-in-c

Добавлено через 1 минуту
Цитата Сообщение от lischun Посмотреть сообщение
спасибо заработало,
И на будущее (во избежание возможных проблем), не пользуйтесь заморочками microsoft, есть стандарт.
1
23.03.2014, 15:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.03.2014, 15:28
Помогаю со студенческими работами здесь

Передача параметров функции в main()
Вот у меня есть две функции, которые в дальнейшем нужно вызвать в void main (). int Chislo(int...

Чтение из файла, название передано как параметры функции main argc & argv
Вообще дано задание - считать из файла чётные строки, название файла должно быть передано как...

Расчет массива в функции и передача в main()
Облазил поиски, но так ничего и не понял. На C++ только начинаю. есть функция func, в которой...

Передача аргументов командной строки функции main()
Добрый день Дана задача: Напишите программу, которая запрашивает пароль, задаваемый в команд-...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru