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

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

01.02.2009, 11:28. Показов 6405. Ответов 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.02.2009, 11:28
Ответы с готовыми решениями:

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

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

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

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

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

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

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

Code
1
C:\1.exe File1 File2
После такого запуска программы
Code
1
2
3
4
argc=3.
argv[0]=="C:\1.exe"
argv[1]=="File1"
argv[2]=="File2"
1
Smart is the new Sexy
32 / 32 / 1
Регистрация: 29.12.2008
Сообщений: 109
01.02.2009, 19:39  [ТС]
Точно. Упустил. Спасибо.
0
 Аватар для Lorr
0 / 0 / 0
Регистрация: 21.04.2009
Сообщений: 21
22.10.2009, 10:19
Возник вопрос про вывод в файл.
Элементарный пример вывод в файл строки:
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
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
22.10.2009, 16:46
Цитата Сообщение от 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.10.2009, 16:46
Помогаю со студенческими работами здесь

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

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

Поменять консольный ввод-вывод на файловый ввод-вывод
вот у меня калькулятор как мне сделать что б числа вводились из файла и результат записывался в новый файл ? // ОБРАТНАЯ...

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

Реализовать вывод массива объектов типа Student на консоль (файловый ввод/вывод)
Как сделать чтобы список студентов выводился на экран в конце? #include&lt;iostream&gt; #include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru