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

Как скопировать строку из структуры в массив?

12.01.2015, 11:53. Показов 2128. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот один из моих вариантов решения проблемы. Не могу понят ьчто не так?
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 "stdafx.h"
 
struct St1
{
    char name[10];
    void initSt();
};
void St1::initSt()
{
    for(int i=0;i<10;i++)
    {
        name[i] = i;
        cout << "struct init = " << name[i] << endl;
    };
};
 
void Copyfunc(St1 X, char *cAr)
{
    strcpy(cAr,X.name);
    cout << "Copyfunc(St1 X, char *cAr)" << cAr;
};
 
int main()
{
    St1 sss;
    sss.initSt();
    Copyfunc(sss, Ar1);
    return 0;
};
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.01.2015, 11:53
Ответы с готовыми решениями:

Не могу скопировать строку в элемент структуры
Объявлена структура: struct AEROFLOT { char nazn; // пункт назначения int numr; //...

Как скопировать строку c одного файла и вставить в другой файл эту же строку с символом в конце “_”
Подскажите, как можно через cmd скопировать строку с одного файла 1.txt и вставить в другой 2.txt,...

Скопировать в третий массив структуры, которые есть в первом массиве и которых нет во втором массиве
Огласить тип структуры, которая включает в себя данные про фамилии и адреса людей. Ввести два...

Как скопировать строку типа std::string в другую строку такого же типа?
Хотел скопировать строку #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;string&gt; using...

10
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,021
12.01.2015, 12:02 2
Строка X.name должна оканчиваться нулем.

Раз ты точно знаешь длину строки, может проще использовать memcpy......
1
Заблокирован
12.01.2015, 12:03 3
Цитата Сообщение от MMt Посмотреть сообщение
Не могу понят ьчто не так?
что не так? Какая ошибка?
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
12.01.2015, 12:35 4
Цитата Сообщение от MMt Посмотреть сообщение
C++
1
name[i] = i;
Что ты здесь хочешь сделать?
0
267 / 170 / 40
Регистрация: 25.08.2014
Сообщений: 1,087
Записей в блоге: 1
12.01.2015, 12:40 5
Copyfunc(sss, Ar1);
Андекларед индетефир. Ну и массив name не инициализирован.
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,713
12.01.2015, 12:52 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
struct St1
{
    char name[11];
    void initSt();
};
void St1::initSt()
{
    for(int i=0;i<10;i++)
        name[i] = 'a'+i;
   name[10]=0;
 }
 
void Copyfunc(St1 X, char *cAr)
{
    strcpy(cAr,X.name);
}
 
int main()
{
    St1 sss;
    char Result[11];
    sss.initSt();
    cout << "struct init = " << sss.name<< endl;
    Copyfunc(sss, Result);
    cout << "Copyfunc(St1 X, char *cAr)" << Result;
   return 0;
}
1
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,495
Записей в блоге: 1
12.01.2015, 12:59 7
Цитата Сообщение от MMt Посмотреть сообщение
C++
1
2
3
4
5
6
7
void St1::initSt() {
 for(int i=0;i<10;i++)
 {
 name[i] = i;
 cout << "struct init = " << name[i] << endl;
 };
};
в результате name[0]=0; то есть символ конца строки стоит на первом месте.
соответственно это пустая строка или ""
strcpy и все остальные подобные функции копируют строку, именно ориентируясь на нулевой символ.
Следовательно в данном случае будет скопировано ноль символов.

Добавлено через 1 минуту
Цитата Сообщение от zss Посмотреть сообщение
C++
1
name[i] = 'a'+i;
такого у автора не было. Это уже принципиально другая строка.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
12.01.2015, 13:04 8
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Следовательно в данном случае будет скопировано ноль символов.
На самом деле один - нуль-терминатор.
0
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,495
Записей в блоге: 1
12.01.2015, 14:27 9
Цитата Сообщение от Tulosba Посмотреть сообщение
На самом деле один - нуль-терминатор.
нуль добавляется не из оригинальной строки, а как самостоятельная константа.
Грубо говоря, не
C++
1
while(*dst++=*src++){}
а наоборот
C++
1
2
3
4
while(*src){
*dst++=*src++
}
*dst='/0';
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
12.01.2015, 14:41 10
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Грубо говоря, не ... а наоборот
Откуда такая уверенность?
0
0 / 0 / 0
Регистрация: 29.04.2014
Сообщений: 185
12.01.2015, 17:33  [ТС] 11
нет ошибки, просто не работает.
суть моего этих движений вот в чем.
Есть структура с разными типами данных.
Отдельная функция, принимает указаную структуру и чар строку определенного размера(79 символов например).
На выходе из функции я ожидаю получить:
2 принятый параметр - чар строку, но уже заполненную данными из структуры(1 принятый параметр этой функции).

Если загвоздка в 0, в окнце строки. то функция memcpy действительно может подойти.
В виду недостатка опыта использую те функции которые мне знакомы а для копирования либо циклы либо strcpy, strnspy, strcpy_s... Хотяя уверен что должны быть и библиотеки котрые преобразуют дабл флоат... в чар формат или строки. Но тут надо самому "шишки набить".

Добавлено через 6 минут
Спасибо всем кто отозвался, много полезного узнал. Тут был неправильно поставлен вопрос, я так думаю.
в АСЦЦ таблице символов мое
C++
1
name[i] = i;
это пустые места или сиимволы как я понимаю. А мне то надо читабельные - допустим 1 2 3 4 5 6 7 8 9 .. а это уже
C++
1
name[i] = i+48;
мне кажется тут все ответы верны. Ещ раз спасибо!
0
12.01.2015, 17:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.01.2015, 17:33
Помогаю со студенческими работами здесь

Прочитать строку из файла и записать ее в массив структуры
Подскажите как это сделать.Есть файлик со строчками,чтобы он каждую строчку считывал в...

1c7.7 ТЗ, как скопировать строку?
обхожу ТЗ в цикле в какой-то момент получаю строку, значения которой мне нужно продублировать, т.е....

Массив: Как скопировать двумерный массив в другой массив?
Как скопировать двумерный массив в другой массив?

Как скопировать оперделенную строку из TextBox1
Как скопировать оперделенную строку из TextBox1 в Label?


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

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