如何在s[7]
中访问s
?
我没有观察到strncpy
和memcpy
之间的任何区别。如果我想打印输出s
以及s[7]
(例如qwertyA
),那么我需要在以下代码中进行哪些更改:
#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
*/
最佳答案
其他人指出了您的无效终止问题。在了解memcpy
和strncpy
之间的区别之前,您需要了解空终止符。
区别在于memcpy
将复制您要求的所有N个字符,而strncpy
将复制到第一个(包括首个)空终止符或N个字符(以较少者为准)。 (如果复制的字符数少于N个,它将用空字符填充其余字符。)
关于c - strncpy和memcpy之间的区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4593907/