开发者社区> 问答> 正文

数字为什么没有读进去?

已解决

读入一个字符串 如果字符串是数字开头的 为什么就读不进去了?
代码如下 为什么结果是这样的?为什么明明输入的是“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;
    }  

展开
收起
51干警网 2016-02-17 22:48:41 2274 0
1 条回答
写回答
取消 提交回答
  • 阿里云论坛版主,QQ 1978638808
    采纳回答

    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);

    `

    2019-07-17 18:29:21
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载