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 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目