Я пытаюсь удалить пробел в начале строки, у меня есть индекс первого символа без пробела, поэтому я попытался сделать это:
int firstNonWhitespace = ...;
char *line = ...;
char *realStart = line + firstNonWhiteSpace;
strcpy(line, realStart);
но получил Abort Trap 6 во время выполнения.
Однако это работает, если я скопирую строку realStart во временную строку, а затем скопирую временную строку в строку:
int firstNonWhitespace = ...;
char *line = ...;
char *realStart = line + firstNonWhiteSpace;
char *tstring = malloc(strlen(realStart) + 1);
strcpy(tstring, realStart);
strncpy(line, tstring, strlen(line));
free(tstring);
strcpy
не любит перекрывающиеся строки. См. stackoverflow.com/questions/7427596/ для нескольких альтернатив. - person Jongware   schedule 12.06.2014