Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.03.2015, 14:38   #1
Ka2R
Пользователь
 
Регистрация: 19.10.2010
Сообщений: 49
По умолчанию Помогите найти ошибку

Написал функцию, которая заполняет строку символами. Строку объявляю в объединении со структурой. Длину строки беру из размера структуры. Никак не могу правильно инициализировать строку

Код:
#include <stdio.h>
#include <string.h>


union str {
  struct  tip {       /*Определяем структуру, где элементы - типы данных*/
    char                ch;     
    unsigned char       uch;    
    signed char         sch;
    short int           shi;
    short unsigned int  usi;
    int                 i;
    unsigned int        ui;
    long int            li;
    long unsigned int   uli;
    float               fl;
              } b;  
  char string[sizeof(struct tip)];
};


int main()
{
  union str st;  
  union st.string="123";
  printf("%i %i\n", strlen(&st.string), sizeof(struct tip));
  memset(&st.string, '1', strlen(&st.string));
  printf("%s", st.string);
  return 0;
}
Компилятор выдает 06.c:25: error: expected identifier or ‘(’ before ‘.’ token

строка с ошибкой

Код:
  union st.string="123";
Ka2R вне форума Ответить с цитированием
Старый 12.03.2015, 14:54   #2
Helloween
Форумчанин
 
Регистрация: 24.04.2012
Сообщений: 300
По умолчанию

переменная st уже инициализирована, соответственно st.string = "123"; уже делать нельзя. strcpy(st.string, "123");

Код:

int main()
{
  union str st;  
  strcpy(st.string, "123");
  printf("%i %i\n", strlen(st.string), sizeof(struct str::tip));
  memset(&st.string, '1', strlen(st.string));
  printf("%s", st.string);
  return 0;
}
Помог? Оставляем отзыв =)
Helloween вне форума Ответить с цитированием
Старый 12.03.2015, 15:23   #3
Ka2R
Пользователь
 
Регистрация: 19.10.2010
Сообщений: 49
По умолчанию

Цитата:
Сообщение от Helloween Посмотреть сообщение
переменная st уже инициализирована, соответственно st.string = "123"; уже делать нельзя. strcpy(st.string, "123");

Код:

int main()
{
  union str st;  
  strcpy(st.string, "123");
  printf("%i %i\n", strlen(st.string), sizeof(struct str::tip));
  memset(&st.string, '1', strlen(st.string));
  printf("%s", st.string);
  return 0;
}
Спасибо большое! Теперь понял
Ka2R вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти седловые точки в матрице(помогите найти ошибку) - pascal tdsotm Помощь студентам 0 20.11.2014 18:57
Помогите найти ошибку - StrToFloat выдаёт ошибку EConvertError для ячеек StringGrid (Delphi) Artsiom Помощь студентам 10 18.12.2013 14:10
Помогите найти ошибку (С++). TheWanderer Помощь студентам 1 19.03.2009 15:00