gpt4 book ai didi

c - 奇怪的 react

转载 作者:行者123 更新时间:2023-12-01 14:41:18 25 4
gpt4 key购买 nike

我只是运行这段代码,我得到的 n=1 不是我期望得到的。你能解释一下为什么会这样吗?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXRIGA 11
int main()
{
char s[MAXRIGA+2];
char a[MAXRIGA]="pippo";
strncpy(s, a, 1); // n=1
printf("%s", s);
return 0;
}

返回

pF

相反,如果 n=2 或更多,我会得到我想要的。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXRIGA 11
int main()
{
char s[MAXRIGA+2];
char a[MAXRIGA]="pippo";
strncpy(s, a, 2); // n=2
printf("%s", s);
return 0;
}

返回

pi

最佳答案

来自 man strncpy :

The strncpy() function is similar, except that at most n bytes of src are copied. Warning: If there is no null byte among the first n bytes of src, the string placed in dest will not be null-terminated.

您仅从源字符串中复制一个字节,该字节不是空终止符。所以你在这里得到一个未定义的行为,因为试图打印一个未终止的字符串。 n=2 也是如此,它似乎是偶然工作的。

关于c - 奇怪的 react ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34519590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com