Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.61/33: Рейтинг темы: голосов - 33, средняя оценка - 4.61
Del_Piero_10
Smart is the new Sexy
28 / 28 / 1
Регистрация: 29.12.2008
Сообщений: 109
1

Вопрос про файловый ввод/вывод

01.02.2009, 11:28. Просмотров 5943. Ответов 6
Метки нет (Все метки)

Есть один глупый вопрос, но он очень меня интересует. Я учу С++ недавно. И вот дошел до файлового ввода вывода. В книге есть пример программы. Вот собственно и он:
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
#include <iostream>
#include <fstream>
using namespace std;
 
int main(int argc, char *argv[])
{
    if (argc != 2) {
        cout << "введите <Имя_Файла>\n";
        return 1;
    }
    ofstream out(argv[1]);
 
    if (!out) {
        cout << "Файл открыть невозможно\n";
        return 1;
    }
 
    char str[80];
    cout << "Вводите строки: \n";
 
    do {
        cout << ": ";
        cin >> str;
        out << str << endl;
    } while (*str != '$');
 
    out.close();
    return 0;
}
Программа осущетсвляет вывод строк в файл, пока не будет введен символ $. Теперь вопрос. Для чего необходима строка:

C++
1
int main(int argc, char *argv[])
Как я понял char *argv[] - безразмерный массив указателей на строки. В этих строка обычно размещают имена файлов, которые будут использовать в программе. Это как я понял для удобства. Я прав или нет? И так же интересует зачем нужна переменная argc?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.02.2009, 11:28
Ответы с готовыми решениями:

Задача про Мартышку и Попугая (файловый ввод/вывод)
Даны два прямоугольника, стороны которых параллельны или перпендикулярны осям...

Найти ошибку в задаче на файловый ввод/вывод (задача про МКАД)
Длина Московской кольцевой автомобильной дороги —109 километров. Байкер Вася...

Разработать программу, отображающую информацию про кафедры ВУЗа (файловый ввод/вывод)
Здравствуйте. Помогите, пожалуйста, с программой. Тема:...

Найти информацию про самый дешевый автомобиль, выпущенный не ранее заданого года (файловый ввод/вывод)
Ребята, помогите написать программу! Задан файл с информацией про...

Заменить в программе, переводящую строку в двоичный код, консольный ввод/вывод на файловый ввод/вывод
Добрый день! Помогите, пожалуйста, с программой. Программа считывает строку...

6
Otaka
1829 / 687 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
01.02.2009, 13:34 2
argv[] - Это массив строк-параметров, которые были переданы экзешнику при его запуске, например, d:\> upx 1.exe -d.
А argc - это колличество этих самых параметров(или элементов массива argv).
0
Del_Piero_10
Smart is the new Sexy
28 / 28 / 1
Регистрация: 29.12.2008
Сообщений: 109
01.02.2009, 16:35  [ТС] 3
Спасибо. Разобрался.

Если вдруг кому понадобится, то в эти переменные записываются аргументы из командной строки, и соответственно их количество. Например имеем программу 1.exe, которая копирует содержимое одного файла в другой. Для этого нам необходимо передать в программу информацию об этих файлах. И при запуске программы мы пишем имена этих файлов и они передаются как параметры в программу:

Код
C:\1.exe File1 File2
Так вот кол-во этих аргументов (File1, File2) и записывается в argc. В данном случае argc = 2. А в argv записываются собственно именно значения этих параметров, т.е. в нашем случае argv[0] = "File1", argv[1] = "File2".

Вот и все. Поправьте, если что неправильно.
0
the_t_a
12 / 12 / 2
Регистрация: 27.09.2008
Сообщений: 43
01.02.2009, 18:59 4
Нет, не так. Программа на С++ всегда получает первый параметр - свой адрес на жестком диске.

Код
C:\1.exe File1 File2
После такого запуска программы
Код
argc=3.
argv[0]=="C:\1.exe"
argv[1]=="File1"
argv[2]=="File2"
1
Del_Piero_10
Smart is the new Sexy
28 / 28 / 1
Регистрация: 29.12.2008
Сообщений: 109
01.02.2009, 19:39  [ТС] 5
Точно. Упустил. Спасибо.
0
Lorr
0 / 0 / 0
Регистрация: 21.04.2009
Сообщений: 21
22.10.2009, 10:19 6
Возник вопрос про вывод в файл.
Элементарный пример вывод в файл строки:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <fstream>
 
using namespace std;
 
 
    
int main()
{
 
   ofstream f1;
   f1.open("1.txt");
   f1 << "privet";
   f1.close();
    
    system("pause");
    return 0;
}
При запуске в wxDev 7 - файл 1.txt создается, но строка не записывается в него.
Если запустить в VC++ 8, то все нормально. В чем может быть причина ?
0
AnonymC
1179 / 464 / 86
Регистрация: 23.06.2009
Сообщений: 6,375
Завершенные тесты: 1
22.10.2009, 16:46 7
Цитата Сообщение от Del_Piero_10 Посмотреть сообщение
Программа осущетсвляет вывод строк в файл, пока не будет введен символ $. Теперь вопрос. Для чего необходима строка:
елси проавильно понял то
C++
1
2
3
4
5
6
int c=0;
FILE *f=fopen("text.txt", "a");
while((c=getc(f))!=EOF){
if(c="$")fclose(f);//или getc(f)=EOF
 
}
0
22.10.2009, 16:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.10.2009, 16:46

Поменять консольный ввод-вывод на файловый ввод-вывод
вот у меня калькулятор как мне сделать что б числа вводились из файла и...

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

Реализовать вывод массива объектов типа Student на консоль (файловый ввод/вывод)
Как сделать чтобы список студентов выводился на экран в конце?...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru