| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1344 人关注过本帖
标题:长字符串/数据的输入
取消只看楼主 加入收藏
a1294549175
Rank: 1
等 级:新手上路
帖 子:17
专家分:8
注 册:2017-1-12
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
长字符串/数据的输入
新人求解,刷题时遇到了这种东西:

    输入的第一行为一个正整数n (1<=n<=10)。
  接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000

老是报错,结果最后发现DOS窗口一次输入最多4096个字符,好像还和分区什么的有关系,求解输入的办法。
搜索更多相关主题的帖子: 字符串 正整数 
2017-01-12 23:26
a1294549175
Rank: 1
等 级:新手上路
帖 子:17
专家分:8
注 册:2017-1-12
收藏
得分:0 
回复 4楼 书生牛犊
可是不知道为什么我自己用文件输入,就能输出正确结果

代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>

#define N 100000

int main()
{
    int i,n,j;

    void func1();

    scanf("%d",&n);
    getchar();
    for(i=0;i<n;i++)
        func1();

    return 0;
}

void func1()
{
    long int len,i,j,n,s;
    char a[N]={0},b[4*N]={0},c[2*N]={0},t[N]={0};
   
    for(i=0;1;i++)
    {
        t[i]=getchar();
        if(t[i]=='\n') {t[i]='0';break;}
    }

    len=strlen(t);

    for(i=0;i<len;i++)
    {
        a[len-i-1]=t[i];
    }

    for(i=0;i<len;i++)
    {
        if(a[i]>='0'&&a[i]<='9') a[i]-='0';
        else if(a[i]>='A'&&a[i]<='Z') a[i]-='A'-10;
        else {printf("ERROR!!!\n");exit(0);}

        b[i*4]=a[i]%2;
        b[i*4+1]=a[i]/2%2;
        b[i*4+2]=a[i]/4%2;
        b[i*4+3]=a[i]/8;
    }

    len=(float)len*4/3+1;

    for(i=0;i<len;i++)
    {
        c[i]=b[i*3]+b[i*3+1]*2+b[i*3+2]*4;
    }

    for(i=2*N-1;i>=0;i--)
        if(c[i]!=0) break;

    for(;i>=0;i--)
        printf("%d",c[i]);

    printf("\n");
}

[此贴子已经被作者于2017-1-13 12:56编辑过]

2017-01-13 12:34
a1294549175
Rank: 1
等 级:新手上路
帖 子:17
专家分:8
注 册:2017-1-12
收藏
得分:0 
感谢各位大神,错找出来了
当OJ平台输入长度为100000时,可用于接受的数组的长度只有100000,会导致后续“\0”储存时发生越位的问题,增加一位数组就好了
程序通过了
2017-01-13 23:56
a1294549175
Rank: 1
等 级:新手上路
帖 子:17
专家分:8
注 册:2017-1-12
收藏
得分:0 
回复 8楼 书生牛犊
这个...
好像影响不是非常大的,不过还是谢谢啦
2017-01-13 23:57
快速回复:长字符串/数据的输入
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012774 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved