Перейти к содержимому

Фотография

Работа со строками + создание нового типа

string char typedef codevision

Сообщений в теме: 6

#1
igor_efremenko

    Пользователь

  • Разработчик ATMEL
  • 24 сообщений
  • ГородБрянск

Помогите разобраться:

Создаю новый тип (структуру)

typedef struct {
    int      Val;

    char   Stroka[];

}  MyType;

 

Объявляю новую переменную .. точнее массив:

 

MyType  MyArray[10];


В теле программы пытаюсь со всем этим работать:
 

i=3;                                                             // …например

 

…skip…

MyArray[i].Val=123;                                   // Тут проблемы нету

MyArray[i].Stroka="bla-bla-bla";               //  А вот тут уже проблема с присвоением

 

 

Собственно вопрос:  

Почему и что надо сделать ???

 

 

 



#2
Adller

    Новичок

  • Пользователи
  • 3 сообщений
  • ГородУкраина

мне кажется в скобках  при объявлении char stroka [ необходимо указать длину ]

 

может это поможет разобраться 

 

 

Строковая переменная  или массив содержащий строку символов.

char stroka[6]="Hello";

Символов (букв) между кавычками  5 , а я указал размер строки 6  !

Дело в том, что строки символов должны заканчиваться десятичным числом 0. 

Не путайте его с символом '0которому соответствует десятичное число 48 по 
таблице ASCII  - которая устанавливает каждому числу определенный символ.



#3
Gipsy

    Продвинутый пользователь

  • Разработчик MICROCHIP
  • 626 сообщений
  • ГородСтаниславів

Перед тем как назваться разработчиком надо всё-таки почитать какую-то брошюрку про  С и не путать начальную инициализацию переменных с оператором присваивания :)



#4
Adller

    Новичок

  • Пользователи
  • 3 сообщений
  • ГородУкраина

да может вы и правы ,но я лично пишу все программы исключительно на ассемблере по этому я не гарантирую правильного ответа со своей стороны по поводу C ,просто подумал что может это натолкнет на какую то мысль 



#5
Adller

    Новичок

  • Пользователи
  • 3 сообщений
  • ГородУкраина

И потом если вы знаете правильный ответ ,могли бы нам и подсказать по тому как меня это тоже интересует)))



#6
igor_efremenko

    Пользователь

  • Разработчик ATMEL
  • 24 сообщений
  • ГородБрянск

Перед тем как назваться разработчиком надо всё-таки почитать какую-то брошюрку про  С и не путать начальную инициализацию переменных с оператором присвоения :)

А Вы, уважаемый, работали с массивом строк?
Можете что-то по существу высказать???



#7
igor_efremenko

    Пользователь

  • Разработчик ATMEL
  • 24 сообщений
  • ГородБрянск

И потом если вы знаете правильный ответ ,могли бы нам и подсказать по тому как меня это тоже интересует)))

 

нашёл выход из ситуации таким образом:

вместо                               MyArray[i].Stroka="bla-bla-bla";

записываю следующую       sprintf(MyArray[i].Stroka,"%s","bla-bla-bla");

 

или вместо   "bla-bla-bla"   может быть переменная, например:

 

char  i;

char  xx[]="bla-bla-bla";

typedef struct {

    int    Val;

    char   Stroka[];

}  MyType;

 

MyType  MyArray[10];

 

.....

 

sprintf(MyArray[i].Stroka,"%s",xx);







Темы с аналогичным тегами string, char, typedef, codevision