gpt4 book ai didi

c - 将数组打印为字符串在末尾返回奇怪的字符

转载 作者:行者123 更新时间:2023-11-30 18:16:39 25 4
gpt4 key购买 nike

我想截掉 *argv[] 的前两个字符并将它们存储在数组中。

int main (int argc, char *argv[])
{
char salt[2] = {argv[1][0], argv[1][1]};
printf("%s\n",salt);
}

编译后,当我通过输入 ./program_name asdf 在终端运行该程序时,我期望“asdf”作为 *argv[] 传入。所以我期望程序会打印出“as”。然而,实际发生的情况是,它将打印出“as”,后跟相同的随机字符。这是最近几次出现的结果:

Ember 。
asX

as8\8

最佳答案

字符串本质上是 C 语言中以 null 结尾的字符序列。在数组中只有两个非空字符,因此当您尝试将其打印为字符串时,其结尾是不确定的。这会导致未定义的行为

如果要从字符数组构造字符串,请将数组的大小扩展一并在末尾添加空字符:

char salt[3] = {argv[1][0], argv[1][1], '\0'};
// ^ Extend ~~~~ Terminate

关于c - 将数组打印为字符串在末尾返回奇怪的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48461952/

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