gpt4 book ai didi

C - 使用 strncpy() 函数后的随机字符

转载 作者:行者123 更新时间:2023-12-02 05:23:58 25 4
gpt4 key购买 nike

我在 C 中有以下程序:

程序的主要问题是我执行复制操作后,复制的字母后显示了一些乱码。我知道这是因为目标变量没有正确地以 null 结尾。但是,如果您仔细检查代码,就会发现我正在执行空终止。为什么问题还是存在?

最佳答案

那么,呃,你怎么看strlen()计算字符串的长度?您认为需要终止吗?

提示:确实如此。字符数组不是 C 中的字符串,除非它以 0 字符结尾。全部strlen()所做的是计算字符数,直到找到终止符,因此在逻辑上使用它来终止缓冲区以使其成为字符串是一种先有鸡还是先有蛋的情况。

你的问题是你误用了strncpy() .这是一件很容易出错的事情,因为从典型的(初学者)C 程序员的角度来看,这个函数有点疯狂。从名称上看,它根本不符合您的预期。

只要您确定 nob < sizeof destination - 1 就可以手动执行此操作:

memcpy(destination, source, nob);
destination[nob] = '\0';

关于C - 使用 strncpy() 函数后的随机字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13050987/

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