Моя функция
От: VolanD2002  
Дата: 09.04.04 11:37
Оценка:
Вот написал функцию для добавления элементов в массив.
(str-новый элемент, num-каким добавить).
Но что-то она косячит.

void AddtoArray(char *str,int num){
char *stradd;
char **newarray;
int x,x1,adding_el;
 adding_el=0;
 newarray=(char **)calloc(size+1,sizeof(char *));
   x=0;
   x1=0;
   while (x<=size+1){
    if (x!=num || adding_el==1){
     stradd=dates[x];
     newarray[x1]=(char *)calloc(strlen(stradd)+1,sizeof(char));
     strcpy(newarray[x1],dates[x]);
     x++;
     x1++;
    }
     else {
      stradd=str;
      newarray[x1]=(char *)calloc(strlen(stradd)+1,sizeof(char));
      adding_el=1;
      strcpy(newarray[x1],str);
      x1++;
     }
   }
 size++;
 dates=(char **)calloc(size,sizeof(char *));
 for (x=0;x<=size;x++){
  stradd=newarray[x];
  dates[x]=(char *)calloc(strlen(stradd)+1,sizeof(char));
  strcpy(dates[x],newarray[x]);
 }

 for (x=0;x<=size;x++){
  free(newarray[x]);
 }
 free(newarray);
}
Re: Моя функция
От: Vamp Россия  
Дата: 09.04.04 11:43
Оценка:
Выдираю одну из ошибок из контекста:

newarray[x1]=(char *)calloc(strlen(stradd)+1,sizeof(char));
strcpy(newarray[x1],dates[x]);


Вот еще:

newarray=(char **)calloc(size+1,sizeof(char *));
...
while (x<=size+1){


Вот в таком аспекте и исправляй.
Да здравствует мыло душистое и веревка пушистая.
Re[2]: Моя функция
От: VolanD2002  
Дата: 10.04.04 11:23
Оценка:
Здравствуйте, Vamp, Вы писали:

V>Выдираю одну из ошибок из контекста:


V>
V>newarray[x1]=(char *)calloc(strlen(stradd)+1,sizeof(char));
V>strcpy(newarray[x1],dates[x]);
V>


V>Вот еще:


V>
V>newarray=(char **)calloc(size+1,sizeof(char *));
V>...
V>while (x<=size+1){
V>


V>Вот в таком аспекте и исправляй.

Здравствуйте, я вот что то не понял, почему здесь.
Re[3]: Моя функция
От: _AK_ Россия  
Дата: 10.04.04 11:40
Оценка:
Здравствуйте, VolanD2002, Вы писали:

VD>Здравствуйте, Vamp, Вы писали:


V>>Вот еще:


V>>
V>>newarray=(char **)calloc(size+1,sizeof(char *));
V>>...
V>>while (x<=size+1){
V>>


V>>Вот в таком аспекте и исправляй.

VD>Здравствуйте, я вот что то не понял, почему здесь.

индекс в C/C++ начинается с 0. следовательно массив из n элементов имеет индексацию от 0 до n-1

PS ну вообще за такие функции стрелять надо (ничего личного).
Re[4]: Моя функция
От: VolanD2002  
Дата: 12.04.04 10:54
Оценка:
Здравствуйте, _AK_, Вы писали:

_AK>Здравствуйте, VolanD2002, Вы писали:


VD>>Здравствуйте, Vamp, Вы писали:


V>>>Вот еще:


V>>>
V>>>newarray=(char **)calloc(size+1,sizeof(char *));
V>>>...
V>>>while (x<=size+1){
V>>>


V>>>Вот в таком аспекте и исправляй.

VD>>Здравствуйте, я вот что то не понял, почему здесь.

_AK>индекс в C/C++ начинается с 0. следовательно массив из n элементов имеет индексацию от 0 до n-1


_AK>PS ну вообще за такие функции стрелять надо (ничего личного).

Здрасти, но вот насчет size вы не правы. Массив я считал из файла из 66 строк:
1-ая строка — число элементов(64), с 2 по 66 -элементы. (т.е. size заранее меньше количества элементов на 1), но почему-то мне кажется, что я не правильно выделяю память для массива.
Re[5]: Моя функция
От: _AK_ Россия  
Дата: 12.04.04 11:17
Оценка:
Здравствуйте, VolanD2002, Вы писали:

VD>Здравствуйте, _AK_, Вы писали:


_AK>>Здравствуйте, VolanD2002, Вы писали:


VD>>>Здравствуйте, Vamp, Вы писали:


V>>>>Вот еще:


V>>>>
V>>>>newarray=(char **)calloc(size+1,sizeof(char *));
V>>>>...
V>>>>while (x<=size+1){
V>>>>


V>>>>Вот в таком аспекте и исправляй.

VD>>>Здравствуйте, я вот что то не понял, почему здесь.

_AK>>индекс в C/C++ начинается с 0. следовательно массив из n элементов имеет индексацию от 0 до n-1


_AK>>PS ну вообще за такие функции стрелять надо (ничего личного).

VD>Здрасти, но вот насчет size вы не правы. Массив я считал из файла из 66 строк:
VD>1-ая строка — число элементов(64), с 2 по 66 -элементы. (т.е. size заранее меньше количества элементов на 1), но почему-то мне кажется, что я не правильно выделяю память для массива.

добрый совет: не изобретай велосипеды и воспользуйся std::vector, std::list или тем чем актуально в этой задаче, если таки хочется написать своё, то сотри всё, забудь что писал и попробуй написать заново, потому что это мрак, а не код и пытаться его зафиксить только время терять.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.