CyberForum.ru - Форум программистов и сисадминов
Вернуться   Форум программистов и сисадминов CyberForum.ru > Форум программистов > Форум C (СИ) > Форум C для начинающих

Ответ Создать новую тему
 
Старый 04.02.2012, 02:24   #1
VN
Новичок
 
Аватар для VN
 
Регистрация: 14.12.2011
Сообщений: 71
Репутация: 0 (0)
По умолчанию Как обнулить массив в структуре?

Код C
1
2
3
4
5
6
7
8
9
10
11
#include  <stdio.h>
#include  <stdlib.h>
#include  <string.h>
#define N 150
 
struct occurrence
{   
    char str [N];
    int val[N]={0};// так не обнуляется пишет ошибку
};  
... 



Спасибо
VN вне форума
Другие темы раздела
[C] лишний и непонятный ноль при выводе СИ
#include <stdlib.h> #include <stdio.h> #include <string.h> #define STR_LEN 64 typedef struct str { int num; char name;. [C] лишний и непонятный ноль при выводе
Как собрать первый пример? СИ
Вообщем, решил начать учить C по книге В.В.Подбельского и С.С.Фомина 2003 года. Но по моему книга уже устарела, потому, что я не могу собрать самый первый пример ни в одном компиляторе. Пример следующий: #include <stdio.h> void main() { printf ("\n Здравствуй, Мир! \n"); } Почему я не могу.... Как собрать первый пример?
Старый 04.02.2012, 02:51   #2
A555
Форумчанин
 
Регистрация: 04.04.2011
Адрес: Беларусь
Сообщений: 202
Репутация: 49 (49)
По умолчанию Re: Как обнулить массив в структуре?

а ты не имеешь права инициализировать там как в структурах так и в классах. Правда сейчас кажется приняли новые стандарты там можно.
A555 вне форума
Старый 04.02.2012, 05:55   #3
zss
Форумчанин
 
Регистрация: 18.12.2011
Адрес: Москва
Сообщений: 703
Репутация: 310 (310)
По умолчанию Re: Как обнулить массив в структуре?

Код C++
1
2
3
4
5
6
7
8
 
struct occurrence {
     char str [N];
     int val[N];
     occurrence(){for(int i=0;i<N;i++)val[i]=0;}
 
 };  
 
zss вне форума
Старый 04.02.2012, 06:17   #4
silent_1991
Модератор
Эксперт C++
 
Регистрация: 11.11.2009
Адрес: Новосибирск
Сообщений: 6,135
Репутация: 3878 (2347)
По умолчанию Re: Как обнулить массив в структуре?

Речь по-моему вообще шла о Pure C. Так что ни о каких конструкторах и классах речи не идёт.
silent_1991 вне форума
Старый 04.02.2012, 10:34  [ТС]   #5
VN
Новичок
 
Аватар для VN
 
Регистрация: 14.12.2011
Сообщений: 71
Репутация: 0 (0)
По умолчанию Re: Как обнулить массив в структуре?

вчера тоже способ нашел.Через указатель, может кому пригодится.
Код C
1
2
3
4
5
6
7
8
9
int main()
{
    struct occurrence tabl,*tabl2=&tabl;
    int nol=0;
    int lov=0;
    for(nol;nol<N;nol++)
    tabl2->val[lov++]=0;
 
...
VN вне форума
Старый 04.02.2012, 10:49   #6
go
Форумчанин
 
Регистрация: 16.04.2009
Сообщений: 3,209
Репутация: 2116 (993)
По умолчанию Re: Как обнулить массив в структуре?

VN, обнуляйте с помощью memset.
go вне форума
Старый 04.02.2012, 11:10  [ТС]   #7
VN
Новичок
 
Аватар для VN
 
Регистрация: 14.12.2011
Сообщений: 71
Репутация: 0 (0)
По умолчанию Re: Как обнулить массив в структуре?

покажите на примере как
VN вне форума
Старый 04.02.2012, 11:11   #8
A555
Форумчанин
 
Регистрация: 04.04.2011
Адрес: Беларусь
Сообщений: 202
Репутация: 49 (49)
По умолчанию Re: Как обнулить массив в структуре?

memset (val,0,N); кажется так
A555 вне форума
Старый 04.02.2012, 11:16   #9
go
Форумчанин
 
Регистрация: 16.04.2009
Сообщений: 3,209
Репутация: 2116 (993)
По умолчанию Re: Как обнулить массив в структуре?

Код C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <string.h>
 
const int SIZE = 10;
 
struct st 
{
   int arr[SIZE];
};
 
int main(void)
{
   struct st myst;
   memset(myst.arr, 0, sizeof myst.arr);
   for ( int i = 0 ; i < SIZE ; ++i )
      printf ("%5d", myst.arr[i]);
   printf ("\n");
}
http://liveworkspace.org/code/e39dc0...e3fa792b54e0cb
go вне форума
После регистрации реклама в сообщениях будет скрыта
Старый 04.02.2012, 11:23   #10
Evg
Форумчанин
Эксперт C++
Автор FAQ
 
Аватар для Evg
 
Регистрация: 30.03.2009
Сообщений: 9,482
Записей в блоге: 19
Репутация: 10980 (3011)
По умолчанию Re: Как обнулить массив в структуре?

Цитата Сообщение от VN Посмотреть сообщение
Через указатель, может кому пригодится
Он скорее через ж...у, чем через указатель

Код 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 occurrence tabl = { { 0 } };
 
  ...
 
  /* Допустим, здесь мы переменную испортили */
 
  ...
 
  /* Если нужно повторно всю переменную забить нулями, то проще всего сделать так */
  {
    struct occurrence tmp = { { 0 } };
    tabl = tmp;
  }
 
  /* Или так */
  memset (&tabl, 0, sizeof (tabl));
 
  /* Если нужно обнулить только поле (массив) val, то либо цикл */
  for (i = 0; i < N; i++)
    tabl.val[i] = 0;
 
  /* Либо через memset */
  memset (&(tabl.val), 0, sizeof (tabl.val));
}
Evg на форуме
Ответ Создать новую тему

Похожие темы
Тема Автор
PascalABC Дан двумерный массив А[n,m]. Обнулить элементы матрицы, стоящие выше главной диагонали. Вывести новый массив на печать.
1. Дан двумерный массив А. Обнулить элементы матрицы, стоящие выше главной диагонали. Вывести новый массив на печать. 2. Найти два минимальных элемента массива А на главной диагонали. Заголовок темы изменен модератором. Он должен быть информативным, отображая содержание темы.
777киря777
C для начинающих Массив в структуре
Привет. В чистом С я не силён, завалился на, казалось бы, простой задаче. Как правильно объявить структуру вроде typedef struct st { int count; int array; } st;?
tasty_sock
С++ для начинающих массив в структуре
Как в структуре задать массив строк фиксированного размера? я попытался так struct pupil { string a; } Оказалось я задал длину строки(
fenix117
С++ для начинающих Массив символов в структуре
Подскажите, пожалуйста, как объявить структуру, в которой первый элемент - массив массивов символов (например: werrtyfg sdf sgfdh), второй и третий элементы - целочисленные массивы? Все массивы динамические. И как выделить для них память?
stratovarius
Delphi Как обнулить массив быстро?
Обнуление массива: var BukvaNote: array of Byte; StrBukvaNote: array of AnsiString; begin For i := 1 To Length(Memo1.Text) do begin BukvaNote := 0; StrBukvaNote := '' end;
greenapple
Опции темы

Текущее время: 00:14. Часовой пояс GMT +4.

Компьютерный форум программистов и сисадминов
Powered by vBulletin® Version 3.8.7 PL2
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Рейтинг@Mail.ru Яндекс.Метрика