程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> c++-數字為什麼沒有讀進去?C++

c++-數字為什麼沒有讀進去?C++

編輯:編程解疑
數字為什麼沒有讀進去?C++

讀入一個字符串 如果字符串是數字開頭的 為什麼就讀不進去了?
代碼如下 為什麼結果是這樣的?為什麼明明輸入的是“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;
}  


最佳回答:


你的cin>>n;是干嘛用的呢?
直接干掉不就好了? 看下下面的運行過程,你的75被cin>>n吃掉了

(gdb) n
33 cin>>n;
(gdb)
75BCD15
34 string a[n];
(gdb) p n
$1 = 75
(gdb) n
36 gets(input);
(gdb) n
38 printf("%s\n",input);
(gdb) n
BCD15
39 long long int v = val(input);
(gdb) p input
$2 = "BCD15\000\000\000@\336\377\377\377\177\000\000\320\224\377\367\377\177\000\000#E\336\367\377\177\000\000\000\000\000\000\000\000\000\000\020.\376\367\377\177\000\000\001", '\000' , "\001\000\000\000\377\177\000\000t:\336\367\377\177\000\000\006\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\006\000\000\000\000\000\000\000\230*\376\367\377\177\000\000\332\026\207\060\000\000\000\000\236B\336\367\377\177\000\000\006\000\000\000\000\000\000\000\032\000\000\000\377\177\000\000\020\337\377\377\377\177\000\000\377\377\377\377\000\000\000\000\300\346\255\367\377\177\000\000\250\372\255\367\377\177\000\000\340\336\377\377\377\177\000\000\377\377\377\377\000\000\000\000\260\342\256\367\377\177\000\000t:\336\367\377\177\000\000\000\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\006\000\000\000\000\000\000\000\230*\376\367\377\177\000\000\355\351C+\000\000\000\000\236B\336\367\377\177\000\000\000\000\000\000\001\000\000\000-\000\000\000\001\000\000\000\220\337\377\377\377\177\000\000\377\377\377\377\000\000\000\000\340\206P\367"...

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved