Этот код определенно вызывает проблему стека, хотя с такой небольшой строкой вы не видите проблему. Возьмем, к примеру, следующее:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char str[] = "";
char *str2 = "A really, really, really, really, really, really loooooooooooooooonnnnnnnnnnnnnnnnng string.";
strcpy(str, str2);
printf("%s\n", str);
printf("%d\n", strlen(str));
return 0;
}
надуманный пример, да, но результат работы это:
A really, really, really, really, really, really loooooooooooooooonnnnnnnnnnnnnnnnng string.
92
Segmentation fault
Это одна из причин, почему функция зЬгсру обескураживают, и рекомендуется использовать функции копирования и конкатенации, которые требуют указания размеров используемых строк.
Как вы знаете, что это не дает вам неопределенного поведения? –
, потому что это дает мне правильную длину строки. –
[Неопределенное поведение означает * что-либо * может случиться] (http://blogs.msdn.com/b/oldnewthing/archive/2011/09/29/10217910.aspx) – phihag