如何在s[7]中访问s

我没有观察到strncpymemcpy之间的任何区别。如果我想打印输出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
*/

最佳答案

其他人指出了您的无效终止问题。在了解memcpystrncpy之间的区别之前,您需要了解空终止符。

区别在于memcpy将复制您要求的所有N个字符,而strncpy将复制到第一个(包括首个)空终止符或N个字符(以较少者为准)。 (如果复制的字符数少于N个,它将用空字符填充其余字符。)

关于c - strncpy和memcpy之间的区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4593907/

10-12 16:08