Я хочу, чтобы ввести строку, но он постоянно возвращается FAULT сегментДвойной Указатель принимать строки вызывает ошибку сегмента
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char **arr;
arr= (char**) malloc (5);
for(int i =0 ; i<5 ; i++)
{
arr[i]=(char *)malloc(10);
}
for(int i=0 ; i<5 ;i++)
{
char ch[10];
printf("%d",i);
scanf("%s",ch);
strcpy(arr[i],ch);
}
for(int i=0 ; i<5 ;i++)
{
printf("%s ",arr[i]);
}
for(int i=0;i<5;i++)
free (arr[i]);
free (arr);
}
, а также блок кода не дает ошибку и запускает его отлично может кто-нибудь сказать мне, почему?
Вы выделяете 5 байтов, но вам нужно '5 * sizeof (char *)' удерживать 5 указателей. – stark
Также не выдавайте вывод malloc. – stark
Как правило, вы можете сократить это до «Do not cast» – stark