Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 28.12.2013
Сообщений: 89
1

работа с файлом через входной параметр

08.01.2014, 12:08. Показов 2215. Ответов 20
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C++
1
2
3
int _tmain(int argc,char* argv[])
{
FILE* F =fopen(argv[1], "wt+");
когда пишу параметр запуская через командную строку или ярлык, создается файл с первой буквой параметра, и туда записывается все что надо. Параметр писал и с полным указанием пути "C:\...." в итоге он называл файл С, писал параметр "input" файл создавался i, ставил кавычки, не помогло, подскажите, то-ли я тупой, то-ли лыжи не едут.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.01.2014, 12:08
Ответы с готовыми решениями:

Входной параметр
В общем суть в следующем: имеется некий запрос со входным параметром ( :PARAMETR) select ...

Требуется изменить в программе входной параметр
Легкое задание, требуется просто изменить в программе входной параметр: Изучите работу функции...

Указатель как входной параметр функции
#include <iostream> const int Max = 5; int* fill_array(double ar, int limit); void...

Массив как входной параметр функции
Привет всем С помощью формул массива высчитываю данных, затем их хочу соединить. Возник вопрос,...

20
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
08.01.2014, 12:23 2
Вот так напишите, скомпилируйте, сделайте запуск из командной строки (с вашим вводом параметров) и покажите скрин окна командной строки, после отработки:
C++
1
2
3
4
int _tmain(int argc,char* argv[])
{
    cout << argv[1] << endl;
    FILE* F =fopen(argv[1], "wt+");
0
-23 / 0 / 2
Регистрация: 15.03.2013
Сообщений: 328
08.01.2014, 12:26 3
Цитата Сообщение от Layzie Посмотреть сообщение
когда пишу параметр запуская через командную строку или ярлык, создается файл с первой буквой параметра, и туда записывается все что надо.
argv это массив указателей на строки, вы получается указываете в имени файла при создании указатель на первую(точнее вторую строку, первая это имя программы). А указатель на строку это не что иное как адрес её первого элемента.
Я бы сначала считал параметр в тип string, а в дальнейшем указал бы переменную типа string в качестве имени файла
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
08.01.2014, 12:28 4
танкист34, воду не мутите, всё и так работает.
0
-23 / 0 / 2
Регистрация: 15.03.2013
Сообщений: 328
08.01.2014, 12:35 5
Цитата Сообщение от alsav22 Посмотреть сообщение
танкист34, воду не мутите, всё и так работает.
я воду и не мутю, а предложил как вариант и не заставляю им пользоваться да и если бы работало, человек бы не спрашивал
0
0 / 0 / 0
Регистрация: 28.12.2013
Сообщений: 89
08.01.2014, 12:39  [ТС] 6
https://downloader-default13m.... p=52cd0ebf
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
08.01.2014, 12:40 7
Цитата Сообщение от танкист34 Посмотреть сообщение
а предложил как вариант
Предлагать не запрещается, но нужно и подумать прежде чем предлагать.
Цитата Сообщение от танкист34 Посмотреть сообщение
а в дальнейшем указал бы переменную типа string в качестве имени файла
Вы в курсе, что fopen() не знает, что такое string? Ей нужен именно указатель на char, что она и получает, а почему не работает у ТС нужно разбираться, у меня же работает.
0
0 / 0 / 0
Регистрация: 28.12.2013
Сообщений: 89
08.01.2014, 12:41  [ТС] 8
Цитата Сообщение от танкист34 Посмотреть сообщение
argv это массив указателей на строки, вы получается указываете в имени файла при создании указатель на первую(точнее вторую строку, первая это имя программы). А указатель на строку это не что иное как адрес её первого элемента.
Я бы сначала считал параметр в тип string, а в дальнейшем указал бы переменную типа string в качестве имени файла
вашим способом пробовал, может и криво пробовал, но где то говорилось о не соответствии типов, вроде бы
C++
1
FILE* F =fopen(argv[1], "wt+");
функция fopen первым параметром просила char* а не string
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
08.01.2014, 12:41 9
Layzie, если это ссылка не скрин, то нужно здесь выкладывать. Расширенный режи сообщения, управление вложениями.
0
0 / 0 / 0
Регистрация: 28.12.2013
Сообщений: 89
08.01.2014, 12:45  [ТС] 10
так?
Миниатюры
работа с файлом через входной параметр  
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
08.01.2014, 12:52 11
Чудеса... Весь код покажите.
0
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
08.01.2014, 13:01 12
Вот почему я никогда не использую ни _tmain, ни wmain.
У Вас проект настроен на Юникод (Character Set - Use Unicode Character Set),
поставьте там "Use Multi-Byte Character Set" и тогда заработает.
А еще лучше - используйте название main.

Не по теме:

Отключать Юникод - это не путь джедаев... Если нужна переносимость на
разные локализации - используйте GetCommandLineW/CommandLineToArgvW.

1
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
08.01.2014, 13:08 13
Убежденный, специально пробовал с Юникодом в проекте (но с main), тоже всё работало. Или влияет именно _tmain в сочетании с Юникодом?
0
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
08.01.2014, 13:09 14
Да, именно _tmain.
1
0 / 0 / 0
Регистрация: 28.12.2013
Сообщений: 89
08.01.2014, 13:18  [ТС] 15
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int _tmain(int argc,char* argv[])
{
cout << argv[1] << endl;
FILE* F =fopen(argv[1], "wt+");
if(argc==2)
{
cout<<"vvedite kol-vo treugolnikov";
int n;
cin>>n;
treangle* O;
O=new treangle[n];
for(int i=0;i<n;i++)
    {cout<<"treangle"<<i+1<<": \n";
    O[i].input();
    char Y[17*3]={'(',(O[i].A.x+'0'),',',(O[i].A.y+'0'),')',',','(',(O[i].B.x+'0'),',',(O[i].B.y+'0'),')',',','(',(O[i].C.x+'0'),',',(O[i].C.y+'0'),')',';'};
    fputs(Y,F);
    }
}
fclose(F);
return 0;
}
Добавлено через 1 минуту
вот большое спасибо, изменил _Tmain на main и все стало работать, можете объяснить в чем разница и что на что влияет?
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
08.01.2014, 13:20 16
Цитата Сообщение от Layzie Посмотреть сообщение
вот большое спасибо, изменил _Tmain на main
Почему, вообще, _tmain пишите? Или это среда так пишет?
0
0 / 0 / 0
Регистрация: 28.12.2013
Сообщений: 89
08.01.2014, 13:28  [ТС] 17
да, оно само, я в шапке почти никогда ничего не трогал
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
08.01.2014, 13:31 18
Цитата Сообщение от Layzie Посмотреть сообщение
да, оно само, я в шапке почти никогда ничего не трогал
Среда какая?
0
0 / 0 / 0
Регистрация: 28.12.2013
Сообщений: 89
08.01.2014, 13:32  [ТС] 19
Visual studio 2008 express
0
alsav22
08.01.2014, 13:35     работа с файлом через входной параметр
  #20

Не по теме:

Можно же без шаблонов проекты создавать: Общие - Пустой. Там что напишешь, то и будет, ничего лишнего.

2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.01.2014, 13:35

Входной и выходной параметр хранимой процедуры
Хотел сделать процедуры с входным и выходным параметрами. Workbench ругается на запятую между...

Как найти входной параметр по выходному?
Проводится некоторое исследование. На вход подаются значения X, на выходе получаются значения Y. У...

Работа с файлом через класс
Доброй ночи всем! Хочу реализовать открытие файла для чтения из конструктора класса CTextFile: ...

Работа с файлом через классы
Привет всем! Может кто помочь, как работать с файлами (открыть, закрывать, читать из файла,...


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

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