| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 392 人关注过本帖
标题:strtok 函数求解~~~
取消只看楼主 加入收藏
oszc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:111
专家分:154
注 册:2011-4-15
结帖率:100%
收藏
 问题点数:0 回复次数:1 
strtok 函数求解~~~
程序代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main(void)
{
    char num[]="(555)555-5555";  //需要将区号、电话前缀、电话后缀 分开
    char *temp;
    char *areaPtr;  //区号
    char *partOnePtr;  //电话前缀
    char *partTwoPtr;  //电话后缀
    int area;  //转化数字 区号
    int partOne;  //转化数字 电话前缀
    int partTwo;  //转化数字 电话后缀
    long phoneNum;  //合成电话

    temp=strtok(num,"(");    //这里应该将“(”去除,而 temp应该只有"\0" 但是 temp却变成了555)555-5555
    
    areaPtr=strtok(NULL,")");   //由于前面的问题,这里的值NULL, 而应该是括号里的数字 区号 555
    
    partOnePtr=strtok(NULL,"-");  //NULL 应该是 前缀 555

    printf("temp:%s\tareaPtr:%s\tpartOnePtr%s\n",temp,areaPtr,partOnePtr);

    partTwoPtr=strtok(NULL,"\0"); //出错 应该是 后缀 5555 后面语句不执行

    printf("partTwo:%s\t\n",partTwoPtr);

    area=atoi(num);
    partOne=atoi(partOnePtr);
    partTwo=atoi(partTwoPtr);

    phoneNum=partOne*10000+partTwo;

    printf("%d %d\n",area,phoneNum);

    return 0;

}


[ 本帖最后由 oszc 于 2011-5-28 15:37 编辑 ]
2011-05-28 15:22
oszc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:111
专家分:154
注 册:2011-4-15
收藏
得分:0 
程序代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main(void)
{
    char num[]="-(555)555-5555";  //这里我在括号前面加了一个"-",程序结果居然对了,是否能说明strtok是有BUG的呢?也就是如果第一个符号就是要找的符号,返回值为空时候 他会返回字符串剩余部分 而导致出错。
    char *temp;
    char *areaPtr;  
    char *partOnePtr;  
    char *partTwoPtr;  
    int area;  
    int partOne;  
    int partTwo;  
    long phoneNum;  

    temp=strtok(num,"(");    
    
    areaPtr=strtok(NULL,")");   
    
    partOnePtr=strtok(NULL,"-");  

    partTwoPtr=strtok(NULL,"\0"); 

    area=atoi(areaPtr);
    partOne=atoi(partOnePtr);
    partTwo=atoi(partTwoPtr);

    phoneNum=partOne*10000+partTwo;

    printf("%d %d\n",area,phoneNum);

    return 0;

}


[ 本帖最后由 oszc 于 2011-5-28 15:50 编辑 ]
2011-05-28 15:28
快速回复:strtok 函数求解~~~
数据加载中...
 
   



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

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