В этом примере программы, иллюстрирующей это поведение strcpy()
, я написал строку "S"
в большую строку previous
, у которой был "Delaware"
. Но эта перезапись влияет только на первые два символа в исходной строке. Остальная часть исходной строки продолжается иметь те же ценности. Как с этим бороться? (Даже memcpy()
, похоже, имеет такое же поведение). Я имею в виду, как превратить оставшиеся символы в 0
? Или остальные символы в строке, сохраняющей исходные значения, не имеют побочных эффектов?strcpy() маленькой струны в большую строку оставляет остальную большую строку неизменной. Как с этим бороться?
#include<stdio.h>
#include<string.h>
int main()
{
char previous[10]="Delaware";
printf("The character at position 4 is %c\n",previous[4]);
strcpy(previous,"S");
printf("The character at position 4 later is %c",previous[4]);
}
Почему вы хотите изменить остальную часть строки на 0? – yngccc
Зачем это делать по умолчанию? Это строковая функция, и строки не связаны с тем, что происходит после нулевого терминатора, так что это просто пустая трата циклов большую часть времени. – chris
'strcpy' также скопирует нулевой терминатор, поэтому, если вы выполните' printf («% s \ n», предыдущий); 'он будет печатать только' S', это предполагает, что место назначения достаточно велико, чтобы также иметь нулевой ограничитель , –