Я понимаю это, когда пытался что-то (только для понимания). Пожалуйста, объясните это поведение:
Первая попытка:
void main()
{
char src[] = "vinay";
int i;
// char name[5] = "test";
char *name= "abcde";
printf("%s \n", name);
if (*(name+5) == '\0')
printf("6th char is null\n");
strcpy(name,src);
printf("printcheck \n");
for (i=0 ; i <6 ; i++)
{
printf("%c \n", *(name+i));
}
printf("%s \n",name);
}
Выход:
abcde
6th char is null
zsh: 16644 segmentation fault (core dumped) a.out
Вторая попытка:
void main()
{
char src[] = "vinay";
int i;
char name[] = "pqrst";
//char *name= "abcde";
printf("%s \n", name);
if (*(name+5) == '\0')
printf("6th char is null\n");
strcpy(name,src);
printf("printcheck \n");
for (i=0 ; i <6 ; i++)
{
printf("%c \n", *(name+i));
}
printf("%s \n",name);
}
Выход:
pqrst
6th char is null
printcheck
v
i
n
a
y
vinay
=============================================== ============================================
Вопрос: почему происходит сбой при попытке 1?
Я пробовал это на машине Solaris
Версия ядра: SunOS 5.8 Generic 117350-43 окт 2006 г.