У меня есть вопрос по поводу 3-го параметра памяти при работе со строкой.strlen(string)
и strlen(string) + 1
, кажется, дают одинаковые результаты.Я бы подумал, что часть +1
будет включать в себя завершение \0
, но, похоже, все отлично работает с обоими.Есть ли лучшая практика здесь, чтобы рассмотреть ??Я видел примеры и того, и другого, и я не уверен, каким путем это сделать ??
Рассмотрим следующую c
программу:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
int main()
{
char string1[20]="Hello World";
char string2[20]="Hello World";
printf("\nstring1=\"%s\"\n",string1);
memmove(string1,string1+6,strlen(string1) + 1);
printf("\nstring1 after memmove \"%s\" using strlen(string1) + 1\n",string1);
printf("\nstring2=\"%s\"\n",string2);
memmove(string2,string2+6,strlen(string2));
printf("\nstring2 after memmove \"%s\" using strlen(sting2)\n",string2);
return 0;
}
Вывод:
string1="Hello World"
string1 after memmove "World" using strlen(string1) + 1
string2="Hello World"
string2 after memmove "World" using strlen(sting2)