鱼C论坛

 找回密码
 立即注册
查看: 2200|回复: 13

字符型输入引起地址冲突

[复制链接]
发表于 2021-6-24 16:25:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 mm1mm 于 2021-6-24 16:34 编辑

#include<stdio.h>

void main()

{
        char a, b, c;
        printf("input character a and b:\n");
        scanf_s("%c%c", &a, &b);
        printf("&c%c\n", a, b);


}

照着小甲鱼抄的~

0x621AA261 (ucrtbased.dll) (student1.exe 中)处有未经处理的异常: 0xC0000005: 写入位置 0x00101023 时发生访问冲突。

用的是VS2019这是啥情况呀.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-24 16:27:16 | 显示全部楼层
用错误的输入格式,怎么可能正确?
你说对不对?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-24 16:30:48 | 显示全部楼层
人造人 发表于 2021-6-24 16:27
用错误的输入格式,怎么可能正确?
你说对不对?

能麻烦指导一下嘛 新手自学的.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-24 16:36:33 | 显示全部楼层
奇怪,书上应该写了呀
float 类型应该用 %f

  1. #include <stdio.h>

  2. int main(void)
  3. {
  4.     float a, b, c;
  5.     scanf("%f%f%f", &a, &b, &c);
  6.     printf("%f%f%f\n", a, b, c);
  7.     return 0;
  8. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-24 16:39:54 | 显示全部楼层
人造人 发表于 2021-6-24 16:36
奇怪,书上应该写了呀
float 类型应该用 %f

是我录入的时候录错了 你看下我上面新复制过来的 这是照着小甲鱼视频上抄的 出现错误提示
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-24 16:43:34 | 显示全部楼层
mm1mm 发表于 2021-6-24 16:39
是我录入的时候录错了 你看下我上面新复制过来的 这是照着小甲鱼视频上抄的 出现错误提示


一定要认真一点呀
printf("&c%c\n", a, b);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2021-6-24 17:09:11 | 显示全部楼层
人造人 发表于 2021-6-24 16:43
一定要认真一点呀
printf("&c%c\n", a, b);

改了还是报错...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-24 17:12:30 | 显示全部楼层
mm1mm 发表于 2021-6-24 17:09
改了还是报错...

我看不到报错信息呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-24 17:15:19 | 显示全部楼层
scanf_s("%c%c", &a, &b);

主要是对这个语句报错0x790BA261 (ucrtbased.dll) (student1.exe 中)处有未经处理的异常: 0xC0000005: 写入位置 0x00991023 时发生访问冲突。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-24 17:19:04 | 显示全部楼层
mm1mm 发表于 2021-6-24 17:15
scanf_s("%c%c", &a, &b);

主要是对这个语句报错0x790BA261 (ucrtbased.dll) (student1.exe 中)处有未 ...

a和b什么类型的?把代码发完整
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-24 17:29:19 | 显示全部楼层
#include<stdio.h>

void main()

{
        char a, b, c;
        printf("input character a and b:\n");
        scanf_s("%c%c", &a, &b);
        printf("&c%c\n", a, b);


}
是不是这里不能用scanf只能用getchar
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-24 17:43:06 | 显示全部楼层
mm1mm 发表于 2021-6-24 17:29
#include

void main()


printf("&c%c\n", a, b);
改为
printf("%c%c\n", a, b);


scanf_s("%c%c", &a, &b);
改为
scanf("%c%c", &a, &b);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-24 17:47:23 | 显示全部楼层
肖-肖 发表于 2021-6-24 17:43

printf("&c%c\n", a, b);
改为

使用的是vs2019 不管是使用scanf_s 还是scanf 都是报错的.
程序是可以运行的 不过输入数据后提示内存错误
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-24 17:51:58 | 显示全部楼层
人造人 发表于 2021-6-24 17:19
a和b什么类型的?把代码发完整

错误原因是 scanf_s 扫描字符需要额外给一个大小参数,应该改为
  1. #include<stdio.h>


  2. void main()
  3. {
  4.     char a, b, c;
  5.     printf("input character a and b:\n");
  6.     scanf_s("%c%c", &a, 1, &b, 1);
  7.     printf("%c%c\n", a, b);
  8. }
复制代码

评分

参与人数 1鱼币 +5 收起 理由
人造人 + 5 无条件支持楼主!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-28 17:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表