Как вы правильно заметили, передача s[3]
в качестве первого аргумента приведет к перезаписи некоторой памяти, которая вполне может быть использована другим.В лучшем случае ваша программа сразу же рухнет;в худшем случае он будет продолжать работать, повреждаться и в конечном итоге повредить что-то, с чем он должен был справиться.
Предполагаемый способ сделать это в C состоит в том, чтобы никогда не передавать массив короче, чем требуется.
Кстати, похоже, вы поменялись местами s
и t
;Вероятно, это означало следующее:
void strcpy(char *t, char *s) {
int i = 0;
while ((t[i] = s[i]) != '\0')
i++;
}
Теперь вы можете скопировать s[4]
в t[7]
, используя эту измененную подпрограмму strcpy
:
char t[] = "Hellow";
char s[] = "Dad";
strcpy(t, s);
(редактировать: длинаs
теперь исправлено)