gpt4 book ai didi

c - 奇怪的行为 scanf、字符串和 C

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

我在使用 C 中的某些代码时遇到问题:

char opt, name[10], path[25];
printf("Things\nMore things\n");
printf("Even more things\n");
printf("\nChar: ");
scanf("\n%c",&opt);
printf("\nTask name: ");
scanf("%s",name);
printf("Name: %s\n", name);
printf("\nFolder name: ");
scanf("%s",path);
printf("Name: %s\n", name);
printf("Path: %s\n", path);

这是在“干净”模式下制造麻烦的代码。问题是,当数据大小大于 10 或 25 时,它不会剪切字符串,而是混合“名称”和“路径”。在某些情况下,它甚至将部分“路径”放入“名称”中。这是未定义的行为,还是我遗漏了什么?

最佳答案

如果你想将用户输入限制为准确的字符数,试试

scanf("%24s",path);

它应该可以防止 char 数组的缓冲区过载。

关于c - 奇怪的行为 scanf、字符串和 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16814820/

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