gpt4 book ai didi

c - strncpy 函数无法正常工作

转载 作者:行者123 更新时间:2023-11-30 20:26:03 24 4
gpt4 key购买 nike

我想做的是要求用户输入以下格式的内容:cd 目录。然后我将“cd”存储在一个字符串中,将“directory”存储在另一个字符串中。这是我的代码:

void main()
{
char buf[50], cdstr[2], dirstr[50];

printf("Enter something: ");
fgets(buf, sizeof(buf), stdin);

//store cd in cdstr
strncpy(cdstr, buf, 2);
printf("cdstr: %s(test chars)\n", cdstr);

//store directory in dirstr
strncpy(dirstr, buf+3, sizeof(buf)-3);
printf("dirstr: %s(test chars)\n", dirstr);
}

输出如下,输入为:cd 路径名

cdstr: cdcd pathname  //incorrect answer
(test chars) //an extra "\n"
dirstr: pathname //correct answer
(test chars) //an extra "\n"

这就是为什么?

最佳答案

这是因为做了strncpy(cdstr, buf, 2)之后, cdstr 中没有以 NULL 结尾的字符串char大批。您可以通过更改 cdstr 来修复它长度为 3 并添加:cdstr[2] = '\0' :

void main()
{
char buf[50], cdstr[3], dirstr[50]={0};

printf("Enter something: ");
fgets(buf, sizeof(buf), stdin);

//store cd in cdstr
strncpy(cdstr, buf, 2);
cdstr[2] = '\0';
printf("cdstr: %s(test chars)\n", cdstr);

//store directory in dirstr
strncpy(dirstr, buf+3, sizeof(buf)-3);
printf("dirstr: %s(test chars)\n", dirstr);
}

关于c - strncpy 函数无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27019409/

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