How can i access s[7]
in s
?
I didn't observe any difference between strncpy
and memcpy
. If I want to print the output s
, along with s[7]
(like qwertyA
), what are the changes I have to made in the following code:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char s[10] = "qwerty", str[10], str1[10];
s[7] = 'A';
printf("%s\n",s);
strncpy(str,s,8);
printf("%s\n",str);
memcpy(str1,s,8);
printf("%s\n",str1);
return 0;
}
/*
O/P
qwerty
qwerty
qwerty
*/
Others have pointed out your null-termination problems. You need to understand null-termination before you understand the difference between memcpy
and strncpy
.
The main difference is that memcpy
will copy all N characters you ask for, while strncpy
will copy up to the first null terminator inclusive, or N characters, whichever is fewer.
In the event that it copies less than N characters, it will pad the rest out with null characters.