读入一个字符串 如果字符串是数字开头的 为什么就读不进去了?
代码如下 为什么结果是这样的?为什么明明输入的是“75BCD15”而读入的确是”BCD15“?怎么能让数字也读进去呢?尝试了scanf和gets两种方法 都不对。。
#include <iostream>
#include <stdlib.h>
#include<cstring>
#include <stdio.h>
using namespace std;
long long int val(char * hex)
{
long long int n = 0;
while (*hex != '\0')
{
n *= 16;
if (*hex >= 'A' && *hex <= 'F')
{
n += *hex - 'A' + 10;
}
if (*hex >= 'a' && *hex <= 'f')
{
n += *hex - 'a' + 10;
}
if (*hex >= '0' && *hex <= '9')
{
n += *hex - '0';
}
hex++;
}
return n;
}
int main()
{
int n,i;
cin>>n;
string a[n];
char input[1000] ;
gets(input);
// scanf("%s",&input);
printf("%s\n",input);
long long int v = val(input);
printf("%lld",v);
// cout<<v<<endl;
return 0;
}
1、c、c++语言规定数组长度必须是常量,不能是变量。但是有的编译器是允许是变量。
2、cin读入一个整数后,把回车留在了缓冲区,gets就会读入一个空字符串。
解决方法1:在cin后用fflush清空缓冲区。
推荐方法2:不动态申请数组,直接定义一个大数组,如:
`
string a[100];
cin>>n;
fflush(stdin);//增加
string a[n];
char input[1000] ;
gets(input);
`
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。