简易获取字符串中空格隔开的数字

昨天蓝桥杯卡了一道水题,原因是不知道怎么读入。今天在网上搜了下,也没找到很合适的策略,索性自己yy了。如果有更好的方法,请大家指教!

一个参考地址:http://bbs.csdn.net/topics/380203242

yy代码:

#include <cstdio>

int main(){
    char s[100];
    int a[100];
    gets(s);
    char *p = s;
    int count = 0;
    int num,len;
    while(sscanf(p,"%d",&num)){
        a[count++] = num;
        len = 0;
        while(num){num /= 10;len++;}
        if(!len) len = 1;//特殊情况,当num是0
        p += len+1;//这里是危险的,因为最后指针可能超出原来的字符串
    }
    for(int i = 0;i < count;i++)
        printf("%d ",a[i]);
    return 0;
}


 用strtok的方法

const int INF = 1000000000;

int num[maxn];

int main(){
    char str[] = "123 3124 432 34345 12";
    char delims[] = " ";
    char *result = NULL;
    result = strtok( str, delims );
    int countn = 0;
    while( result != NULL ){
        num[countn++] = atoi(result);
        result = strtok( NULL, delims );
    }
    return 0;
}


 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值