Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.77
AC-93
16 / 16 / 0
Регистрация: 27.01.2010
Сообщений: 150
#1

много вопросов о вводе-выводе - C++

03.02.2011, 09:54. Просмотров 1684. Ответов 25
Метки нет (Все метки)

Здравствуйте, законченный дельфист решил переехать... вопросов куча, просьба ответить.
1) много вариантов ввода вывода, например сравниать <<, >> и scanf printf по сути они аналогичны? Считается ли каой-то вариант более выгодным или красивым?
2) зачем в scan и print дополнительно указывать тип, если он уже задан при объявлении переменой.
3) при объявлении int a=0; int a={0} ; эти две команды аналогичны? что значат эти круглые скобки. есть ли разница.
4) почему без начального присваивания нельзя прочитать значение с помощью scan, а из потока можно.
int a; scanf("d",a); выдается ошибка.
5) если у меня куча переменных инт, могу я их разом обнулить (нач. присваивание), типа k1,k2,k3,k4=0;
6) при чтении и файла, что значит %d чем отличается от просто d , зачем пишется & перед переменной?
fscanf("%d",&a);
7) как прочитать числа через пробел из файла.
вариант fscanf("%d",k1,k2,k3,k4); не работает, кстати вот это "%d" относится ко всем или только к первому?
8) как сделать из файла стандартный потом, нашел вариант название исполн файла<<input.txt но если я не знаю как называется exe файл? или вдруг ег переименуют.
нашел как сделать из файла потом и читать как in<< и out>> но cin=in; con=out; не работает.
топик будет дополняться) спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.02.2011, 09:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос много вопросов о вводе-выводе (C++):

Много вопросов - C++
ребят подскажите как зделать Panel прозрачной а текст который в ней есть осталься видимым

Русский язык в вводе/выводе - C++
с помощью функции setlocale(0, &quot;rus&quot;); Программа понимает русский язык, который написан в кавычках, но как сделать, что-бы Стринговская...

Ошибка в вводе/выводе массива - C++
При выводе элемента массива всегда значение ноль. Вероятно ввожу массив неправильно. Помогите пожалуйста найти ошибку. P.S. жел-но не...

хочу понять как работает двумерный массив,буду задавть много вопросов - C++
решил про 2д массива изучать.правда в книге еще далеко... подскажите мне как работает идополните код программы решил написать прогу,про...

Кирилица отображается нормально при выводе из программы, но иероглифы при вводе в консоль - C++
Что надо подключить что бы в консоли писать русскими буквами? cin &gt;&gt; kol; cin &gt;&gt; x; cout &lt;&lt; &quot;У вас есть &quot; &lt;&lt; kol &lt;&lt; &quot; &quot; &lt;&lt; x; ...

Почему при вводе числа программа работает нормально, а при вводе буквы уходит в бесконечный цикл? - C++
void mainmenu() { cout &lt;&lt; &quot;Введи число&quot; &lt;&lt; endl; cin &gt;&gt; choice; if (choice == 1) { cout &lt;&lt; &quot;Hello&quot; &lt;&lt; endl; } ...

25
asics
Freelance
Эксперт С++
2850 / 1785 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
03.02.2011, 20:27 #16
Цитата Сообщение от AC-93 Посмотреть сообщение
и кстати как комментировать код не по строчкам? Чтобы блоком целым.
C++
1
2
/*some 
code*/
1
silent_1991
Эксперт С++
4989 / 3046 / 149
Регистрация: 11.11.2009
Сообщений: 7,028
Завершенные тесты: 1
03.02.2011, 20:54 #17
AC-93, блин. Ну сказал же ясно, не мешать Си и Си++ потоки. А вы это умудрились не в пределах программы сделать, а в пределах операции. Не сможете вы подсунуть сишной функции, которая работает с данными типа FILE *, подсунуть объект плюсового потока.
0
AC-93
16 / 16 / 0
Регистрация: 27.01.2010
Сообщений: 150
03.02.2011, 21:02  [ТС] #18
#include <stdio.h>
FILE *freopen(const char *fname, const char *mode, FILE *stream);

Функция freopen() связывает существующий поток с другим файлом. Имя нового файла задается параметром fname, режим доступа — параметром mode, a переназначаемый поток определяется указателем stream. Возможные значения строки mode — те же, что и для функции fopen() (полное их описание можно найти в разделе, посвященном описанию fopen).
я и пытался поток с файлом связать
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
Пример
 
Приведенная здесь программа использует функцию freopen(), чтобы перенаправить поток stdout 
в файл с названием OUT. Первое сообщение программы выводится на экран, а второе, 
перенаправленное, записывается функцией freopen(), в файл на диске.
 
#include <stdio.h>
#include <stdlib.h>
 
int main(void)
{
  FILE *fp;
 
  printf("Это сообщение появится на экране.\n");
 
  if((fp=freopen("OUT", "w" ,stdout))==NULL) {
    printf("Не удается открыть файл.\n");
    exit(1);
  }
 
  printf("Это сообщение будет записано в файл OUT.");
 
  fclose(fp);
 
  return 0;
}
Добавлено через 3 минуты
http://www.cplusplus.com/reference/clibrary/cstdio/freopen/
по-моему функция работает именно как я и хотел...
0
silent_1991
Эксперт С++
4989 / 3046 / 149
Регистрация: 11.11.2009
Сообщений: 7,028
Завершенные тесты: 1
03.02.2011, 21:20 #19
AC-93, вы понимаете, что у Си-функций printf/scanf и Си++-объектов std::cin и std::cout разные потоки?

Добавлено через 4 минуты
Хотя нет, поток-то один, stdin/stdout, так что в принципе можно перенаправить поток в файл.

Добавлено через 7 минут
Кстати, а чем вас такой вариант не устраивает?

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <fstream>
 
int main()
{
    std::ifstream fin("input.txt");
    std::ofstream fout("output.txt");
 
    fout << "Hello, World!" << std::endl;
 
    return 0;
}
0
AC-93
16 / 16 / 0
Регистрация: 27.01.2010
Сообщений: 150
03.02.2011, 21:25  [ТС] #20
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <stdio.h>
#include <fstream> 
 
 
using namespace std;
int main()
{   int a; 
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
    cin>>a; 
    
    cout<<a;
    return(0);
}
так работает. Все-таки поток называется cin cout ? или in и out , зачем тогда пишется c?
например когда я объявлял поток
ifstream in; in.open("input.txt"); то поток обращался через in>>f; без лишних букв c.

Далее если я прописал using namespace std; я все равно должен прописывать std перед in и out , вроде же нет...
Простите что утомил... но...

Добавлено через 3 минуты
такой вариант не устраивает тем, что привык в делфи иметь возможность быстро переключаться с клавы-монтор на инпут-оутпут файл(закоментил строчку перенаправления файла в стандартный поток и все), а тут придется переписывать все команды.
0
silent_1991
Эксперт С++
4989 / 3046 / 149
Регистрация: 11.11.2009
Сообщений: 7,028
Завершенные тесты: 1
03.02.2011, 21:55 #21
AC-93, вы сами на свой вопрос ответили:

Цитата Сообщение от AC-93 Посмотреть сообщение
например когда я объявлял поток
ifstream in; in.open("input.txt");
Вот именно, Вы объявили поток (точнее объект). Вы могли его назвать хоть ololoin и ololoout и работать через эти идентификаторы. Поскольку разработчики класса basic_iostream захотели назвать объекты cin и cout, потому вы с ними именно через такие идентификаторы работаете. cin/cout - это тоже определённые кем-то объекты, как определённые вами in/out, потому вы и используете для доступа к ним имя "с лишним c".

Добавлено через 28 минут
Такой извращённый вариант вас устроит? (для переключения между режимами "консоль/файл" достаточно дописать один символ "/" и убрать один, в обе стороны)

Так данные будут выведены на консоль:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <fstream>
 
//*
using std::cin;
using std::cout;
//*/
 
int main()
{
//-----------------------------------------------------------------------------
    /*
    std::ifstream cin("input.txt");
    std::ofstream cout("output.txt");
    //*/
//-----------------------------------------------------------------------------
 
    cout << "Hello, World!" << std::endl;
 
    return 0;
}
А так в файл:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <fstream>
 
/*
using std::cin;
using std::cout;
//*/
 
int main()
{
//-----------------------------------------------------------------------------
    //*
    std::ifstream cin("input.txt");
    std::ofstream cout("output.txt");
    //*/
//-----------------------------------------------------------------------------
 
    cout << "Hello, World!" << std::endl;
 
    return 0;
}
0
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
04.02.2011, 06:39 #22
Цитата Сообщение от AC-93
Здравствуйте, законченный дельфист решил переехать... вопросов куча, просьба ответить.
есть различия между C и C++, так как это два разных языка, почитай историю
соответственно на C ты пишешь одним образом, а на C++ другим образом

Цитата Сообщение от AC-93
Считается ли каой-то вариант более выгодным или красивым?
C
1
printf("%d%d%d", 1, 2, 3);
C++
1
std::cout << 1 << 2 << 3;
printf() - одна функция, следовательно один вызов
<< - одна функция, следовательно три вызова

добавим пробелы
C
1
printf("%d %d %d", 1, 2, 3);
C++
1
std::cout << 1 << ' ' << 2 << ' '<< 3;
так вот, printf() использовать в C++ не принято, так как printf() сохранена для совместимости с C, от которого C++ произошёл, чтобы программисты C могли переходить на C++ со своими кодами, в которых уже есть printf()
0
AC-93
16 / 16 / 0
Регистрация: 27.01.2010
Сообщений: 150
17.02.2011, 20:50  [ТС] #23
Еще раз всем спаибо, занялся практикой под присмотром знающих людей, стало намного легче и понятней, пока правда проблема с оформлением и работаю по принципу-придумать код на паскале-перевести на с. И еще запретили в плюсах кодить, вопрос о потоках отпал)
Появился новый, не хотел засорять новой темой.

Итак как сделать совместимые файлы 2010 и 2008 visual studio?
0
ValeryS
Модератор
6729 / 5138 / 484
Регистрация: 14.02.2011
Сообщений: 17,240
17.02.2011, 21:41 #24
Как я тебя понимаю.............
Сам лет десять назад мучался такиме-же вопросами


для начала Делфи это Паскаль улучшенный ООП рушечки и т.д.
придуман Виртом для начинающих взамен БАСИКА
первый язык (насколько я знаю) структурного программирования.
С тоже язык структурного программирования
На этом их сходства заканчиваются
Read Write в Паскале это элементы языка
а printf scanf в С это функции реализованные в библиотеке
В С вообще по моему нет функций встроеных в язык
хорошо ли это ?
С называют "ассемблером высокого уровня"
смотри пример
C++
1
2
#include <stdio.h> // подключаем библиотеку ввода/вывода
printf("Hello Word");
и теперь я пишу для Виновс Люних Мак или микроконтролера я не меняю программу
я просто подключаю библиотеку
она реализована так что в одном случае выдает текст на экран
а в другом случае(микроконтроллер) на терминал
можно ли это в паскале???
ты спрашиваешь зачем знак %
отвечаю это знак формата вывода
например
C++
1
2
3
4
char a='A';       // присваиваем переменной значение "А"
printf("%c",a);  // печатаем текстовое значение  А
printf("%d",a);  // печатаем десятичное значение 67
printf("%x",a);  // печатаем шеснадцатеричное значение 41
в общем спрор кто хуже кто лучше бесполезен
надо быстро написать пишем на делфи
надо залезть внутрь системы, написать драйвер -С
С уважением Валерий
1
silent_1991
Эксперт С++
4989 / 3046 / 149
Регистрация: 11.11.2009
Сообщений: 7,028
Завершенные тесты: 1
17.02.2011, 21:47 #25
ValeryS, это всё очень классно... Только к чему всё это?

AC-93, что вы имеете ввиду под совместимостью?
1
AC-93
16 / 16 / 0
Регистрация: 27.01.2010
Сообщений: 150
17.02.2011, 22:25  [ТС] #26
для любой проги создаю проект, в него засовываю файл *.c
потом если хочу открыть на 2008, то пишет что возможно создано в более новой версии и тут открыть не может. приходится руками брать код из исходника и копипастить в новый проект.
а если с 2008 на 2010 притаскиваю, он требует обновить под новую версию, производит действия какие-то, после этого глючит дебагер. опять приходится руками.
мелочь, но вдруг можно без этого.
0
17.02.2011, 22:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2011, 22:25
Привет! Вот еще темы с ответами:

Составить программу, которая при вводе символа с клавиатуры выво-дит "латинская буква" при вводе латинской буквы и "не латинская бук-ва" во всех остал - C++
Составить программу, которая при вводе символа с клавиатуры выво-дит &quot;латинская буква&quot; при вводе латинской буквы и &quot;не латинская бук-ва&quot;...

Много вопросов - Базы данных
Вопрос 1: Есть ли в SQL такое понятие как, определение имен таблиц. Типа есть БД и в ней нужно узнать сколько существует таблиц и вывести...

Знаки вопросов при выводе из БД - PHP БД
Здравствуйте,сейчас разрабатываю сайт и столкнулся с проблемой кодировок страниц,а именно:я сделал опрос,данные для которого запрашиваются...

Много вопросов по АСПУШКЕ - C# ASP.NET
1) Можно ли в мастер страниц запихнуть другую мастер страниц, если ДА то как? 2) Как сделать многоязычный сайт, в АСПУШКЕ есть свойство...


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

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

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