鱼C论坛

 找回密码
 立即注册
查看: 1277|回复: 15

[已解决]scanf函数求问

[复制链接]
发表于 2020-6-5 14:07:50 | 显示全部楼层 |阅读模式

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

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

x
#include<stdio.h>
int main()
{
char a[256];
printf("请输入你的名字:");
scanf_s("%s", a);
printf("%s", a);
return  0;
}
这样子运行后会出现 0x7AF1E63C (ucrtbased.dll)处(位于 身高体重转换.exe 中)引发的异常: 0xC0000005: 写入位置 0x00220000 时发生访问冲突。这个错误,请问如何解决
还有就是为什么char a后面要跟【256】,谢谢

最佳答案
2020-6-5 14:15:11
scanf_s 和 scanf 不一样。改成
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main() {
    char a[256];
    printf("请输入你的名字:");
    scanf("%s", a);
    printf("%s", a);
    return  0;
}


char a后面要跟【256】
表示这是个数组。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-5 14:15:11 | 显示全部楼层    本楼为最佳答案   
scanf_s 和 scanf 不一样。改成
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main() {
    char a[256];
    printf("请输入你的名字:");
    scanf("%s", a);
    printf("%s", a);
    return  0;
}


char a后面要跟【256】
表示这是个数组。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-5 14:53:36 | 显示全部楼层
没学过scanf_s。它的用法还是先查查吧。char是个字符类型,单个只是一个字节。一个字节只能存一个字符。而一个汉字至少两个字符。char a【256】表示a有256个字符。这样就防止某些名字过长而无法用a接收的情况了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-5 16:44:36 | 显示全部楼层
scans("%数据类型“,&变量),例如 scanf("%d",&a); 一定需要加上取地址符号&
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-7 16:59:53 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-6-5 14:15
scanf_s 和 scanf 不一样。改成

谢谢我知道了 我用的vs2019,这个编译器自己将scanf函数变为scanf_s了,据说是提高安全性,而且输入字符时还的要求加【】
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-7 17:01:05 | 显示全部楼层
405794672 发表于 2020-6-5 14:53
没学过scanf_s。它的用法还是先查查吧。char是个字符类型,单个只是一个字节。一个字节只能存一个字符。而 ...

好多谢谢,我查了下,是因为我的编译器的原因,我用的vs2019,已经将scanf函数变为scanf_s了,据说是为了提高安全性,而且输入字符必须得加【】
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-7 17:07:16 | 显示全部楼层
金熙川 发表于 2020-6-7 16:59
谢谢我知道了 我用的vs2019,这个编译器自己将scanf函数变为scanf_s了,据说是提高安全性,而且输入字符 ...


我也用的 vs2019。要用 scanf_s 的话,写:
scanf_s("%s", a, 256);

不过,我更建议你写
fgets(a, 256, stdin)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-7 17:13:04 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-6-7 17:07
我也用的 vs2019。要用 scanf_s 的话,写:

不过,我更建议你写

嗯,谢谢,我刚学没多久,后面那个fgets还不太懂,还有就是scanf_s("%s", a, 256);后面的这个256无论什么时候都写256可以吗,在定义char时也写256,这样应该比较方便
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-7 17:15:01 | 显示全部楼层
金熙川 发表于 2020-6-7 17:13
嗯,谢谢,我刚学没多久,后面那个fgets还不太懂,还有就是scanf_s("%s", a, 256);后面的这个256无论什么 ...


你的 char 数组多长 scanf_s 里的数就写多少 。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-7 17:16:25 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-6-7 17:15
你的 char 数组多长 scanf_s 里的数就写多少 。

嗯,我的意思是在定义char数组时可不可以直接定义成256的,好像还有一个方法是char a【】??就是这样空着不定义,他自己能识别你定义了多长
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-7 17:17:48 | 显示全部楼层
金熙川 发表于 2020-6-7 17:16
嗯,我的意思是在定义char数组时可不可以直接定义成256的,好像还有一个方法是char a【】??就是这样空 ...

空着的必须立即赋值,比如
char a[]="hello";
它的长度就是后面的字符串的长度+1(因为有 '\0')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-7 18:06:02 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-6-5 14:15
scanf_s 和 scanf 不一样。改成

层主请问为什么我这个输出的x就是一长串数字呢,类似地址一样
#include<stdio.h>
#include<math.h>
void main()
{
        double x, s;
        printf("input number:\n");
        scanf_s("%1f", &x);
        s = cos(x);
        printf("cos of %1f is %1f\n", x, s);
}
输出的是这样的:
input number:
1
cos of -92559604281615349327455055764546598862942936775909121745485824.000000 is 0.811623
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-7 18:09:44 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-6-7 17:17
空着的必须立即赋值,比如它的长度就是后面的字符串的长度+1(因为有 '\0')

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

使用道具 举报

发表于 2020-6-7 19:38:51 | 显示全部楼层
hui_ym 发表于 2020-6-7 18:06
层主请问为什么我这个输出的x就是一长串数字呢,类似地址一样
#include
#include

是 %lf 啦,不是 %1f
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-9 08:50:02 | 显示全部楼层
金熙川 发表于 2020-6-7 17:01
好多谢谢,我查了下,是因为我的编译器的原因,我用的vs2019,已经将scanf函数变为scanf_s了,据说是为了 ...

我也用的VS2019啊,但是scanf就是scanf,不会自动转换。只是提示错误。这个函数不能用。查一下百度,改一下项目属性,忽略警告,就能用了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-9 08:55:52 | 显示全部楼层
hui_ym 发表于 2020-6-7 18:06
层主请问为什么我这个输出的x就是一长串数字呢,类似地址一样
#include
#include

输入好像不能限制多少位吧?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-13 15:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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