Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1177194
  • 博文数量: 573
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 66
  • 用 户 组: 普通用户
  • 注册时间: 2016-06-28 16:21
文章分类

全部博文(573)

文章存档

2018年(3)

2016年(48)

2015年(522)

分类: C/C++

2015-12-02 16:32:10


点击(此处)折叠或打开

  1. #include <string.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>

  4. int getField(char *szSrc,int iNum,char *szValue,int iFlag)
  5. {
  6.     char * phead = NULL; /*域首字符*/
  7.     char * ptail = NULL; /*域尾字符*/
  8.     int iLen = 0; /*域长度*/
  9. /*    char chFlag = iFlag;*/
  10.     printf("iFlag = %d\n", iFlag);
  11. /*    printf("chFlag = %c\n", chFlag);*/
  12.     char szFlag[2];
  13.     memset(szFlag, 0, sizeof(szFlag));
  14. /*    memcpy(szFlag, &chFlag, sizeof(char));*/
  15.     sprintf(szFlag, "%c", iFlag);
  16.     if(iNum < 0)
  17.     {
  18.         printf("域个数不对!\n");
  19.         return -1;
  20.     }
  21.     phead = szSrc;
  22.     while(1)
  23.     {
  24.         ptail = phead;
  25.         while((*ptail) != '\0')
  26.         {
  27.             if((*ptail) & 0x80) /*是汉字*/
  28.             {
  29.                 ptail = ptail+2;
  30.             }
  31.             else if(strncmp(ptail, szFlag, sizeof(char) * strlen(szFlag)) == 0) /*是分隔符*/
  32.             {
  33.                 break;
  34.             }
  35.             else /*是字符*/
  36.             {
  37.                 ptail++;
  38.             }
  39.         }
  40.         if(0 == iNum)
  41.          {
  42.              iLen=ptail-phead;
  43.              memcpy(szValue, phead, iLen);
  44.              return 0;
  45.          }
  46.         else
  47.         {
  48.             iNum--;
  49.             phead = ptail + 1;
  50.             if((*phead) == '\0')
  51.             {
  52.                 printf("域个数不对!\n");
  53.                 return -2;
  54.             }
  55.         }
  56.     }
  57. }

  58. int main(int argc, char ** argv)
  59. {
  60.     if(argc != 2)
  61.     {
  62.         perror("参数错误!\n");
  63.         return 0;
  64.     }
  65.     char szSrc[1024] = "dkjasf|1 23弢 123 |abc|bcd|网银|王珅|efg";
  66.     char szValue[128];
  67.     int iRc = 0;
  68.     int iNum = 0;
  69.     iNum=atoi(argv[1]);
  70.     memset(szValue, 0, sizeof(szValue));
  71.     printf("szSrc = %s\n", szSrc);
  72.     iRc=getField(szSrc, iNum, szValue, '|');
  73.     if(iRc < 0)
  74.     {
  75.         printf("域值为空\n");
  76.         return 0;
  77.     }
  78.     printf("szValue = [%s]\n", szValue);
  79.     return 0;
  80. }

阅读(481) | 评论(0) | 转发(0) |
0

上一篇:getcwd函数

下一篇:goto

给主人留下些什么吧!~~