gpt4 book ai didi

c - 请告诉我哪里错了

转载 作者:行者123 更新时间:2023-11-30 19:56:27 25 4
gpt4 key购买 nike

#include <stdio.h>
main()
{
char name1[15],name2[15],name3[15];
int no;

printf("Enter the serial number and name one\n");
scanf("%d %15c',&no, name1");
printf("%d %15s\n\n",no,name1);

printf("Enter serial number and name two\n");
scanf("%d %s",&no,name2);
printf("%d %15s\n\n",no, name2);

printf("Enter serial number and name three");
scanf("%d %15s",&no,name3);
printf("%d %15s\n\n",no,name3);
}

嗨,我是编程新手,由于某些原因我开始使用 C。我上面输入的代码是我想要执行的程序。当我使用 Code::Blocks 执行它时,它会运行直到输入序列号并命名,然后如果我输入一个数字,它就会没有响应。然后我尝试使用 Visual Studio 2013 进行编译,它再次停止响应。

之后,我尝试使用 Visual Studio 2013 调试器进行调试,在按“继续”后,它显示了 temp.exe 中 0x7575B790 (msvcrt.dll) 处的第一次机会异常:0xC0000005:访问冲突写入位置 0x00000000。它说这个 Temp.exe 中 0x7575B790 (msvcrt.dll) 处未处理的异常:0xC0000005:访问冲突写入位置 0x00000000。我之前已经在 Code::Blocks 中编程过,它们都运行良好。请告诉我哪里出错了。另请解释一下 %s 的用法。

谢谢

最佳答案

scanf("%d %15c',&no, name1");

应替换为:

scanf("%d %14s",&no, name1);
  • 使用双引号,因为单引号不会终止 C 中的字符串。
  • 使用 %14s (按照 chux 的建议),这样就不会溢出字符串缓冲区并导致段错误

%s 用于读取空格分隔的字符串。如果您想读取整行,则必须使用 fgets功能

关于c - 请告诉我哪里错了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27822762/

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