C语言——fgets访问异常冲突报错

img


到了这一行出现异常了,我是看着视频敲的代码,哪里出现问题了,请指点一下谢谢!

p 指针,你分配了多大的内存空间??,你截图挡住了看不到

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7437052
  • 这篇博客你也可以参考下:C语言fgets函数
  • 你还可以看下c语言参考手册中的 c语言-fgets()
  • 除此之外, 这篇博客: C语言fgets按行读取文件,末尾的换行符问题中的 3.总结 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • Windows下换行符是\r\n连个字符,Linux下位\r
    • fgets会在输入流末尾自动加上’\0’
    • fgets函数原型为:char * fgets(char *restrict _Buf, int _MaxCount, FILE *restrict _File);但是fgets最多能接收的字符数量为(MaxCount - 1),这一点也要注意
    • fgets会吸收缓冲区中的回车符!!!并且这个回车符也会被解析为\r\n两个字符!!,这一个细节十分重要。图片展示:
      111
      可以看到缓冲区中存储着“ab\r\n",所以打印出这个结果并不奇怪。
  • 以下回答由chatgpt基于相关博客总结生成:

    根据参考资料和问题描述,可以看出问题发生在使用fgets函数时遇到了异常冲突报错。下面是针对这个问题的可能解决方案:

    首先,我们需要检查代码中是否包含错误或者逻辑问题。从参考资料中的段落0可以了解到fgets函数的特性,比如fgets函数会在输入流末尾自动加上'\0',且fgets最多能接收的字符数量为MaxCount - 1。根据参考资料中的段落1和段落2运行效果的例子可以看出,如果输入的字符长度超过了最大读取字符数(MaxCount - 1),fgets函数只会读取部分字符。

    根据参考资料中的段落3的运行效果例子也可以看出,fgets函数会吸收缓冲区中的回车符,并且这个回车符也会被解析为"\r\n"两个字符。

    所以我可以猜测,你的代码中可能存在以下问题:

    1. 声明的字符数组长度不够,导致fgets函数读取超过数组长度的字符。
    2. 未正确处理fgets函数读取过程中的回车符导致异常。
    3. 其他未知的代码错误或逻辑问题。

    为了更好地定位问题,我建议你提供你所编写的具体代码。这样我可以更详细地分析并给出更具体的解决方案。