gpt4 book ai didi

c - 我的输出显示了一些奇怪的符号

转载 作者:太空宇宙 更新时间:2023-11-04 07:03:55 25 4
gpt4 key购买 nike

我必须为我的类(class)编写代码。编码是关于要求用户键入他们的姓名、年龄和 ID。然后程序应该根据他们名字的前 6 个字母、他们的年龄和学生 ID 的前两个字母来获取密码。问题是输出中的未识别符号 (╠╠╠╠╠╠╠╠╠╠╠╠╠╠)。谁能告诉我为什么它在那里>?然后它应该计算并显示密码的长度。这是代码:

#include <stdio.h>
#include <string.h>
void main(void)
{
char name[20], id[9], age[3], passcode[10];
int x;


puts("Enter your name:\n");
gets(name);

puts("\nEnter your student id:\n");
gets(id);

puts("\nEnter your age:\n");
gets(age);

x = strlen(passcode);

strncpy(passcode, name, 6);
strncat(passcode, id, 2);

printf("The passcode is:%s \n",passcode);
printf("The passcode has %d characters..\n",x);

}

它看起来像:

Enter your name:

johnny

Enter your student id:

dc87671

Enter your age:

20
The passcode is:johnny╠╠╠╠╠╠╠╠╠╠╠╠╠╠20dc
The passcode has 22 characters..
Press any key to continue . . .

最佳答案

The passcode has 22 characters

然而你为密码分配了一个 10 个字符的缓冲区

passcode[10]

您不是空终止密码。来自 strncpy 的注释

No null-character is implicitly appended at the end of destination if source is longer than num. Thus, in this case, destination shall not be considered a null terminated C string (reading it as such would overflow).

还要注意这一行

x = strlen(passcode);

在初始化之前作用于密码。因此,它将包含随机位,使 x 的值定义不明确。您目前不使用 x,因此不会直接影响手头的问题。

关于c - 我的输出显示了一些奇怪的符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34931221/

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