为什么我输入了66,第二个数字却得到0?

问题描述 投票:0回答:1

enter image description hereenter image description here

为什么我输入了66,第二个数字还是0?

c++ scanf
1个回答
0
投票

scanf("%s",&a)是不正确的,因为你读取的是一个单字符。

scanf("%d",&a);

试试其中的一个:或者

scanf("%c",&a);

0
投票

首先是: printfscanf 包括从 <cstdio> 在C++中。的 <stdio.h> 头在C语言中使用。

其次,你可以看到 scanf 返回一个值--你应该总是检查这个。如果发生错误(或者转换失败),那么想要调试忽略它的结果,比一开始就检查要困难得多。

第三,你可以看到转换指定器中的 %s

除了匹配的字符外,总是存储一个空字符(所以参数数组必须有至少宽度+1字符的空间)。

因为它读的是 绳子 的字符。你已经传递了一个字符的地址,这意味着你几乎肯定会在它的外面写,并看到未定义的行为。使用 %s 没有宽度指定符总是很危险的(即,不要这样做)。

你可以使用 %c 来读取单个字符,或者你可以读取一个字符串(进入一个实际的字符数组),然后检查长度和内容,或者你可以使用C++流,让你的生活变得更简单。

© www.soinside.com 2019 - 2024. All rights reserved.