scanf函数求问
#include<stdio.h>int main()
{
char a;
printf("请输入你的名字:");
scanf_s("%s", a);
printf("%s", a);
return0;
}
这样子运行后会出现 0x7AF1E63C (ucrtbased.dll)处(位于 身高体重转换.exe 中)引发的异常: 0xC0000005: 写入位置 0x00220000 时发生访问冲突。这个错误,请问如何解决
还有就是为什么char a后面要跟【256】,谢谢
scanf_s 和 scanf 不一样。改成#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
char a;
printf("请输入你的名字:");
scanf("%s", a);
printf("%s", a);
return0;
}
char a后面要跟【256】表示这是个数组。 没学过scanf_s。它的用法还是先查查吧。char是个字符类型,单个只是一个字节。一个字节只能存一个字符。而一个汉字至少两个字符。char a【256】表示a有256个字符。这样就防止某些名字过长而无法用a接收的情况了。 scans("%数据类型“,&变量),例如 scanf("%d",&a); 一定需要加上取地址符号& 永恒的蓝色梦想 发表于 2020-6-5 14:15
scanf_s 和 scanf 不一样。改成
谢谢我知道了 我用的vs2019,这个编译器自己将scanf函数变为scanf_s了,据说是提高安全性,而且输入字符时还的要求加【】 405794672 发表于 2020-6-5 14:53
没学过scanf_s。它的用法还是先查查吧。char是个字符类型,单个只是一个字节。一个字节只能存一个字符。而 ...
好多谢谢,我查了下,是因为我的编译器的原因,我用的vs2019,已经将scanf函数变为scanf_s了,据说是为了提高安全性,而且输入字符必须得加【】 金熙川 发表于 2020-6-7 16:59
谢谢我知道了 我用的vs2019,这个编译器自己将scanf函数变为scanf_s了,据说是提高安全性,而且输入字符 ...
我也用的 vs2019。要用 scanf_s 的话,写:scanf_s("%s", a, 256);
不过,我更建议你写fgets(a, 256, stdin) 永恒的蓝色梦想 发表于 2020-6-7 17:07
我也用的 vs2019。要用 scanf_s 的话,写:
不过,我更建议你写
嗯,谢谢,我刚学没多久,后面那个fgets还不太懂,还有就是scanf_s("%s", a, 256);后面的这个256无论什么时候都写256可以吗,在定义char时也写256,这样应该比较方便 金熙川 发表于 2020-6-7 17:13
嗯,谢谢,我刚学没多久,后面那个fgets还不太懂,还有就是scanf_s("%s", a, 256);后面的这个256无论什么 ...
你的 char 数组多长 scanf_s 里的数就写多少 。 永恒的蓝色梦想 发表于 2020-6-7 17:15
你的 char 数组多长 scanf_s 里的数就写多少 。
嗯,我的意思是在定义char数组时可不可以直接定义成256的,好像还有一个方法是char a【】??就是这样空着不定义,他自己能识别你定义了多长 金熙川 发表于 2020-6-7 17:16
嗯,我的意思是在定义char数组时可不可以直接定义成256的,好像还有一个方法是char a【】??就是这样空 ...
空着的必须立即赋值,比如char a[]="hello";它的长度就是后面的字符串的长度+1(因为有 '\0') 永恒的蓝色梦想 发表于 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 永恒的蓝色梦想 发表于 2020-6-7 17:17
空着的必须立即赋值,比如它的长度就是后面的字符串的长度+1(因为有 '\0')
哦对,理解了,谢谢 hui_ym 发表于 2020-6-7 18:06
层主请问为什么我这个输出的x就是一长串数字呢,类似地址一样
#include
#include
是 %lf 啦,不是 %1f 金熙川 发表于 2020-6-7 17:01
好多谢谢,我查了下,是因为我的编译器的原因,我用的vs2019,已经将scanf函数变为scanf_s了,据说是为了 ...
我也用的VS2019啊,但是scanf就是scanf,不会自动转换。只是提示错误。这个函数不能用。查一下百度,改一下项目属性,忽略警告,就能用了。 hui_ym 发表于 2020-6-7 18:06
层主请问为什么我这个输出的x就是一长串数字呢,类似地址一样
#include
#include
输入好像不能限制多少位吧?
页:
[1]