gpt4 book ai didi

c - Strchr 和 strncpy 误用

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

嗨,我正在尝试找到 - 字符,然后将最左边的字符放入字符串中。在这里,我希望 FUPOPER 存储在 program_id_DB 中,但是当我运行此代码时,我的输出结果为:

Character '-' found at position 8.

prgmid 包含 FUPOPERL <-从哪里得到这个 l?!?!

char data_DB[]="FUPOPER-$DSMSCM.OPER*.FUP";

char program_id_DB[10];

char program_name_DB_c[ZSYS_VAL_LEN_FILENAME];

char *pos = strchr(data_DB, '-');

if (pos)
strncpy(program_id_DB,data_DB, pos-data_DB);


printf("Character '-' found at position %d.\n", pos-data_DB+1);

printf("The prgmid contains %s\n",program_id_DB);

最佳答案

您没有初始化program_id_DB ,所以它可以自由地包含任何它想要的东西。在开始之前将其设置为零:

memset(program_id_DB, 0, 10);

(您需要 #include <string.h> 来获取 memset 。)

事实上,你正在做的事情非常危险,因为不能保证你传递给 printf 的字符串。是空终止的!使用前始终将数组清零,并将最多 9 个非空字符复制到其中。

关于c - Strchr 和 strncpy 误用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6616036/

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