Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
dero
1 / 1 / 1
Регистрация: 12.10.2012
Сообщений: 41
#1

Считывание массива char - C++

16.02.2014, 02:36. Просмотров 305. Ответов 9
Метки нет (Все метки)

Есть такой кусок кода, при выполнение не считывается массив name, а сразу просит ввести country.

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
#define _CRT_SECURE_NO_WARNINGS
#include <conio.h>
#include <iostream>
using namespace std;
 
struct foot{
    char *name = new char[15];
    char *country = new char[15];
    int ball;
};
 
void vvod(foot *turnir, int N)
{
    for (int i = 0; i < N; i++)
    {
        cout << "Name: "; gets(turnir[i].name);
        cout << "Country: "; gets(turnir[i].country);
        cout << "Ball: "; cin >> turnir[i].ball;
    }
}
 
int main()
{
    int N;
    cout << "N = "; cin >> N;
    foot *turnir = new foot[N];
    
    vvod(turnir, N);
 
    cout << "------------------------------------" << endl;
    for (int i = 0; i < N; i++)
    {
        cout << "Name: " << turnir[i].name << endl;
        cout << "Country: " << turnir[i].country << endl;
        cout << "Ball: " << turnir[i].ball << endl << endl;
    }
 
    _getch();
    return 0;
}
Результат выполнения:
C++ (Qt)
1
2
N = 3
Name: Country:
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.02.2014, 02:36     Считывание массива char
Посмотрите здесь:

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

Считывание из файла в char' овский массив - C++
Да вопрос боян, но у меня почему-то все символы программа считывает, как один и тот же символ. Дайте пожалуйста код, который считает в...

Считывание текста из файла text в массив char - C++
Такая проблема, есть файл с текстом There are many big and small libraries everywhere in our country. They have millions of books in...

Считывание значений из файла (преобразование char в int) - C++
Доброго времени суток. Столкнулся с такой проблемой. Была произведена запись числового массива int16 в файл в таком виде: ...

Считывание String посимвольно либо Char in Switch - C++
Здравствуйте, суть такова: Нужно написать 3 числа (0-7), а дальше считать каждое число по отдельности и в зависимости от числа, выполнить...

Считывание из файла в char - при выводе выводится лишнее - C++
Считываю из файла в строку типа char, если у меня в строке меньше 16 символов, то при выводе выводится какой-то мусор, наверное связано с...

Запись в *char элемента из массива *char[i] - C++
Есть динамический массив, например char *drives = {&quot;A:&quot;, &quot;B:&quot;, &quot;C:&quot;, &quot;D:&quot;, &quot;E:&quot;, &quot;F:&quot;, &quot;G:&quot;, &quot;H:&quot;, &quot;I:&quot;, &quot;J:&quot;, &quot;K:&quot;, &quot;L:&quot;,&quot;M:&quot;, &quot;N:&quot;,...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
16.02.2014, 02:58     Считывание массива char #2
Цитата Сообщение от dero Посмотреть сообщение
struct foot{
* * char *name = new char[15];
* * char *country = new char[15];
* * int ball;
};
забавно, забавно. как Вы думаете, этот участок кода как работает? один раз выделили память для всех структур сразу?
dero
1 / 1 / 1
Регистрация: 12.10.2012
Сообщений: 41
16.02.2014, 03:00  [ТС]     Считывание массива char #3
я только начал разбираться со структурами. как лучше сделать тогда?
DrOffset
7058 / 4199 / 949
Регистрация: 30.01.2014
Сообщений: 6,965
16.02.2014, 03:03     Считывание массива char #4
Цитата Сообщение от metaluga145 Посмотреть сообщение
забавно, забавно. как Вы думаете, этот участок кода как работает? один раз выделили память для всех структур сразу?
Конечно работает - это с++11.
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
16.02.2014, 03:05     Считывание массива char #5
dero,
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
#include "stdafx.h"
#include <conio.h>
#include <iostream>
using namespace std;
 
struct foot{
    char *name;
    char *country;
    int ball;
};
 
void vvod(foot *turnir, int N)
{
    for (int i = 0; i < N; i++)
    {
        cout << "Name: "; gets(turnir[i].name);
        cout << "Country: "; gets(turnir[i].country);
        cout << "Ball: "; cin >> turnir[i].ball;
    }
}
 
int main()
{
    int N;
    cout << "N = "; cin >> N;
    foot *turnir = new foot[N];
    
    turnir->name = new char[15];
    turnir->country = new char[15];
 
    vvod(turnir, N);
 
    cout << "------------------------------------" << endl;
    for (int i = 0; i < N; i++)
    {
        cout << "Name: " << turnir[i].name << endl;
        cout << "Country: " << turnir[i].country << endl;
        cout << "Ball: " << turnir[i].ball << endl << endl;
    }
 
    _getch();
    return 0;
}
Добавлено через 2 минуты
Цитата Сообщение от DrOffset Посмотреть сообщение
Конечно работает - это с++11.
я еще не выучил все фишки, ибо у меня vs2010
dero, забудьте про мое исправление. прошу прощения.
DrOffset
7058 / 4199 / 949
Регистрация: 30.01.2014
Сообщений: 6,965
16.02.2014, 03:14     Считывание массива char #6
Цитата Сообщение от dero Посмотреть сообщение
Есть такой кусок кода, при выполнение не считывается массив name, а сразу просит ввести country.
Быстро поправить можно заменив функцию на
C++
1
2
3
4
5
6
7
8
9
void vvod(foot *turnir, int N)
{
    for (int i = 0; i < N; i++)
    {
        cout << "Name: "; cin >> turnir[i].name;
        cout << "Country: "; cin >> turnir[i].country;
        cout << "Ball: "; cin >> turnir[i].ball;
    }
}
Проблема в том, что вы считываете из потока ввода строку разными способами. И для gets в потоке все еще остались символы, поэтому он сработал для Name.
Можно еще очистить буфер потока перед последующим вводом так:
C++
1
    fflush(stdin);
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
16.02.2014, 03:15     Считывание массива char #7
dero, а теперь почему не работает. изначально в буфере потока лежит один символ с кодом 10. когда Вы вызываете gets, эта функция просто берет из потока то, что там лежит, то есть, именно этот символ.
DrOffset
7058 / 4199 / 949
Регистрация: 30.01.2014
Сообщений: 6,965
16.02.2014, 03:17     Считывание массива char #8
Цитата Сообщение от metaluga145 Посмотреть сообщение
я еще не выучил все фишки, ибо у меня vs2010

Не по теме:

Можно кратко посмотреть здесь.

metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
16.02.2014, 03:19     Считывание массива char #9
для очистки бууффера используйте
C++
1
cin.ignore();
Добавлено через 1 минуту

Не по теме:

Цитата Сообщение от DrOffset Посмотреть сообщение
Можно кратко
совсем кратко ^^, короче только сесть и нормально все по очереди разобрать))
я понемногу читаю, разбираю, практикую. все сразу не схватишь)

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.02.2014, 03:22     Считывание массива char
Еще ссылки по теме:

Считывание элементов массива из файла, где в первой строке можно задавать размерность массива - C++
Разработать программу для работы с одномерным массивом. Ее функции: - считывание элементов массива из файла (txt), где в первой строке...

запись массива в строку - считывание массива из строки. - C++
Под unix на си(не с++). Посоветуйте, как можно реализовать(меня интересуют функции, которые можно использовать для этого)): Есть...

Считывание массива из файла - C++
Здравствуйте. Прочитал кучу форумов, но нигде не нашел ответа на свой вопрос. Имеется текстовый в котором хранится прямоугольная...

Считывание массива из файла - C++
Помогите, пожалуйста с заданием. Дедлайн завтра. Не пойму как реализовать ( Надеюсь на Вашу помощь. спасибо. Из файла (имя файла...

Считывание массива из файла - C++
#include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; int main () { int i,j; int matr1; FILE *f1;


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

Или воспользуйтесь поиском по форуму:
DrOffset
16.02.2014, 03:22     Считывание массива char
  #10

Не по теме:

Цитата Сообщение от metaluga145 Посмотреть сообщение
совсем кратко ^^, короче только сесть и нормально все по очереди разобрать))
я понемногу читаю, разбираю, практикую. все сразу не схватишь)



Не по теме:

По каждой конкретной фиче там кратко. Можно юзать ctrl-F

Yandex
Объявления
16.02.2014, 03:22     Считывание массива char
Ответ Создать тему
Опции темы

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