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

Массив символов в структуре - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Удаление элемента массива http://www.cyberforum.ru/cpp-beginners/thread108140.html
Здравствуйте. Необходимо удалить из массива А(20) первый отрицательный элемент,при этом ввод элементов массива необходимо осуществить с клавиатуры. Язык - С.
C++ Найти минимум среди сумм элементов диагонали матрицы, параллельных побочной диагонали Пожалуйста, помогите решить задачку Дана целочисленная прямоугольная матрица. определить: 1) колво строк, не содержащих ни одного четного элемента; 2) минимум среди сумм элементов диагонали, параллельных побочной диагонали. Заранее спасибо. http://www.cyberforum.ru/cpp-beginners/thread108129.html
найти в массиве непрерывный участок из 10 чисел с наибольшим средним значением C++
Проверьте пожалуйста, почему все средние значения (второй массив) одинаковы Задание: найти в массиве непрерывный участок из 10 чисел с наибольшим средним значением #include <iostream.h> #include <conio.h> #include <stdlib.h> const int n=200;
microsoft agent как запустить в C++ C++
дайте пожалуйста исходник , ил просто код как запустить персонажа из microsoft agent на языке С++ Добавлено через 19 часов 3 минуты народ ну попомиге:(
C++ Что за ошибка??? http://www.cyberforum.ru/cpp-beginners/thread108063.html
помогите доделать код #include <iostream> #include <vector> #include <cmath> #include <ctime> #include <algorithm> using namespace std; void out(int n, vector<int> &f1) {
C++ Диаграмма классов Здраствуйте!! Подскажите, пожалуйста, как можно создать диаграмму классов в Visual Studio. Я знаю,что там можно сгенерировать диаграмму по уже написаному коду, но мне нужно сначала создать диаграмму классов, а по ней получить код. Я выполняю такую очередность действий: File->New->Project->Empty Project. Потом из toolbox перетягиваю элемент в рабочую область и создается класс. Проблема в том, что... подробнее

Показать сообщение отдельно
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
29.03.2010, 18:39     Массив символов в структуре
Так а надо ли оно тебе?
Смотри, во первых, CutString возвращает указатель на char, а s.group[i] имеет тип string. Так что ничё не выйдет.

Если ты хочешь все соки выжать из s.group[i], тогда смотри, вот если мы напишем вот так:
s.group[i].str[0] или вот так s.group[i].str[1] так или вот так s.group[i].str[2], то всё будет работать ОК, эти записи корректны (вплоть до s.group[i].str[14], хе, впрочем s.group[i].str[15] тоже сработает, но ну его на фиг)

Теперь смотри, ты возвращаешь адрес на строку. Куда ты реально можешь его запихать? Особых вариантов я не вижу, вышеперечисленные переменные- элементы массива str, имеют тип char (а возвращается, напомню, указател на char).

Так что извини, каким боком массив символов относится к указателю на char, мне непонятно.

А если ты подразумеваешь, что переменная s.group[i].str суть адрес нулевого элемента массива и в эту переменную неплохо было бы вернуть значение, возвращаемое CutString, то вынужден тебя огорчить. Понимаешь, в чём дело, вот это сработает:

C++
1
char* per= s.group[i].str
ТО есть тут всё понятно, переменной per мы присвоили адрес нулевого элемента массива str

Но по этому адресу ты прописать ничего не сможешь потому, что такой переменной (s.group[i].str) просто нет! Памяти для неё не выделено! Вот это просто не сканает:

C++
1
s.group[i].str=  CutString
Ну, я думаю суть ты уловил. Когда s.group[i].str в правой части оператора присваивания, то прога нормально высчитывает адрес нулевого элемента, а когда в левой- извини, нет такой переменной s.group[i].str.

Чё делаем?
Я что-то не могу уловить, почему тебе просто вместо массива не объявить указатель на строку, вот так:
struct string
{
char* str;
};

И с ним не работать? В суть программы не вникал, но вот это сканало бы тогда:
s.group[i].str= CutString(line);

Добавлено через 13 минут
Хм, последний вариант очень даже ничего.
Но если тебе кровь из носа надо, чтобы возвращённая строка размещалась именно в этих 15-ти элементах... Тогда просто скопируй её и всё:
C++
1
2
3
4
5
6
7
8
struct string
{
  char str[15];
};
 
//Код всякий
 
strcpy (s.group[i].str, CutString(line));
...Как говорится, всего, и делов, то.
 
Текущее время: 11:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru