while_true_1earn 2022-06-17 18:05 采纳率: 66.7%
浏览 19
已结题

学c的时候练习题中碰到的问题

问题遇到的现象和发生背景

做的练习题,已经照着能运行的标准答案修改了,但是依旧会报错

问题相关代码,请勿粘贴截图

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
// 输入一个整型数,然后申请对应大小空间内存,然后读取一个字符串,字符串的输入长度小于最初输入的整型数大小,最后输出输入的字符串即可
int main()
{
int i;
scanf("%d", &i);
char* p;
p =(char*)malloc(i);
char c ;
scanf("%c",&c);
gets(p);
puts(p);
return 0;
}

运行结果及报错内容

运行到puts(p)的地方就会报错
0x00007FFEE220F130 (ucrtbased.dll)处(位于 作业.exe 中)引发的异常: 0xC0000005: 写入位置 0xFFFFFFFFC3A0EDB0 时发生访问冲突。

img

我的解答思路和尝试过的方法

尝试过把puts(p)换成printf("%s",p),结果还是会在printf的地方报错

我想要达到的结果

解决报错问题,想知道这会不会是我电脑的问题

  • 写回答

1条回答 默认 最新

  • fuill 2022-06-17 18:20
    关注

    malloc得加头文件#include <stdlib.h>
    申请的内存是sizeof(char)*i
    修改如下

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include <stdlib.h>
    // 输入一个整型数,然后申请对应大小空间内存,然后读取一个字符串,字符串的输入长度小于最初输入的整型数大小,最后输出输入的字符串即可
    int main()
    {
    int i;
    scanf("%d", &i);
    getchar();
    char* p;
    p =(char*)malloc(sizeof(char)*i);
    //char c ;
    //scanf("%s",p);
    gets(p);
    puts(p);
    return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月25日
  • 已采纳回答 6月17日
  • 创建了问题 6月17日

悬赏问题

  • ¥15 Android STD快速启动
  • ¥15 如何使用simulink建立一个永磁同步直线电机模型?
  • ¥30 天体光谱图的的绘制并得到星表
  • ¥15 PointNet++的onnx模型只能使用一次
  • ¥20 西南科技大学数字信号处理
  • ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
  • ¥30 STM32 INMP441无法读取数据
  • ¥15 R语言绘制密度图,一个密度曲线内fill不同颜色如何实现
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动