У меня ошибка сегментации, когда я хочу сохранить строку в динамическом массиве.
У меня есть программа, которая делает это:
Пользователь вставляет символ "s"
Программа входит в цикл и сохраняет строки в массиве (имя: cod).
Когдапользователь вставляет символ "t", он останавливается
После этого я сохраняю этот массив в первой позиции нового динамического массива (имя: vec).
Затем, если пользователь вставляет символ "s"снова
Программа входит в цикл и сохраняет строки в массиве.
Когда пользователь вставляет символ "t", он останавливается
После этого я сохраняю этот массив во второй позиции нового динамического массива..
и т. Д.
Это мой код:
int main () {
char Cod[30][11];
char tmp[11];
char ***vec;
int i = 0;
strcpy (tmp, "p");
vec = (char *** ) malloc (sizeof ( char *) );
vec[0] = (char ** ) malloc (sizeof ( char *) * 30);
do {
scanf("%s", tmp);
while( (strcmp (tmp, "p")) != 0){
strcpy ( Cod[i] , tmp );
scanf("%s", tmp);
i++;
}
vec = (char ***) realloc (vec, sizeof ( char *) * (i + 1));
vec[i + 1] = (char ** ) realloc (vec[i + 1], sizeof ( char *) * (30));
vec[i-1] = (char **) Cod;
scanf("%s", tmp);
}
while((strcmp (tmp, "s")) == 0);
printf("%s", vec[0][0]);
return 0;
}
Это часть кода, которая работает:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
char Cod[30][11];
char tmp[11];
int i = 0;
strcpy (tmp, "p");
do {
scanf("%s", tmp);
while( (strcmp (tmp, "p")) != 0){
strcpy ( Cod[i] , tmp );
scanf("%s", tmp);
i++;
}
scanf("%s", tmp);
}
while((strcmp (tmp, "s")) == 0);
printf("%s", Cod[0]);
return 0;
}