Вот написал функцию для добавления элементов в массив.
(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);
}
Выдираю одну из ошибок из контекста:
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){
Вот в таком аспекте и исправляй.
Здравствуйте, 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>Вот в таком аспекте и исправляй.
Здравствуйте, я вот что то не понял, почему здесь.
Здравствуйте, 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 ну вообще за
такие функции стрелять надо (ничего личного).
Здравствуйте, _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), но почему-то мне кажется, что я не правильно выделяю память для массива.
Здравствуйте, 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 или тем чем актуально в этой задаче, если таки хочется написать своё, то сотри всё, забудь что писал и попробуй написать заново, потому что это мрак, а не код и пытаться его зафиксить только время терять.