注册 登录
编程论坛 C语言论坛

(ucrtbased.dll)处(位于 程序清单4.1.exe 中)引发的异常: 0xC0000005: 写入位置 0x000000B66D9C0000 时发生

allennay 发布于 2017-10-16 17:09, 4757 次点击
源文件
//talkback.c -- 一个能为您提供一些信息的对话程序
#include<stdio.h>
#include<string.h>
#define DENSITY 62.4
int main()
{
    float weight, volume;
    int size, letters;
    char name[40];

    printf("Hi!What's your first name?\n");
    scanf_s("%s",name);
    printf("%s,what's your weight in pounds?\n", name);
    scanf_s("%f", &weight);
    size = sizeof name;
    letters = strlen(name);
    volume = weight / DENSITY;
    printf("Well,%s,your volume is %2.2f cubic feet.\n",
        name, volume);
    printf("Also,your first name has %d letters,\n",
        letters);
    printf("and we have %d bytes to store it in.\n", size);
    return 0;
}

一进行调试就会出现  0x00007FFBE4C07CC9 (ucrtbased.dll)处(位于 程序清单4.1.exe 中)引发的异常: 0xC0000005: 写入位置 0x000000DD40570000 时发生访问冲突。

求高手解答。谢谢。这个是我按照C Primer Plus(第五版)中文版 程序清单4.1中的talkback.c 打出来的源文件。格式应该是对的。为什么会出现访问冲突,程序运行不了呢。
4 回复
#2
pydlq2017-10-16 17:20
scanf_s("%s",name);改成scanf("%s",name);或者scanf_s("%s",name,40);
#3
allennay2017-10-16 17:44
回复 2楼 pydlq
感谢大佬的无私指教,请问能说下原因吗。本身教程里的是没有_s后缀的,但是我不加_s会出现_CRT_NONSTDC_NO_WARNINGS报错。经您提醒我在设置里取消SDL安全检测。把_s后缀去掉就可以运行了。但是没弄明白为什么会这样。我刚自学C语言。请不吝赐教。谢谢。
#4
pydlq2017-10-16 18:00
回复 3楼 allennay
我也是新人,我买的书很垃圾很多东西都没讲,所以网上看你们的问题一起学习。我也是一知半解。等别人讲解吧
#5
allennay2017-10-16 20:57
回复 4楼 pydlq
非常感谢。我也是刚开始学,啥都不明白。能加个QQ一起学习吗。
我的QQ 373406594  问题随便填。
1