Chinaunix首页 | 论坛 | 博客
  • 博客访问: 79339
  • 博文数量: 30
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 165
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-05 17:14
文章分类
文章存档

2012年(15)

2011年(15)

分类:

2012-12-13 22:37:57

本程序不能直接作为一个应用程序使用,只是一个函数实现,当然为了大家方便调试,我还是加了一个测试的例子。
 

int getword(char *p,char c,int num,char *sub)
{
    char *a;
    int i=-1;
    char *s;
    s=strdup(p);
    clear_space(s,c);
    if((a=s)==NULL||*s==0) return 1;
    while(1)
    {
        if(*s==c)
        {
            i++;
            *s='\0';
            if(num==i) {strcpy(sub,a);return 0;}
            a=s+1;
        }
        ++s;
        if(*s=='\0')
        {
            i++;
            if(num==i) {strcpy(sub,a);return 0;}
            //printf("%s\n",a);

            break;
        }
    }
    return 1;
}
void clear_space(char *s,char c)
{
    int i,j,k;
    j=strlen(s);
        for(i=0;i<j;i++)
        {
            if(*(s+i)==*(s+i+1)&&*(s+i)==c)
            {
                for(k=i+1;k<j;k++)
                {
                 *(s+k)=*(s+k+1);
                }
                j--;
                i--;
            }
        }
    if(*(s+strlen(s)-1)==c) *(s+strlen(s)-1)='\0';
    if(*s==c)
        for(i=0;i<strlen(s);i++)
            *(s+i)=*(s+i+1);
}

 

下面是一个调用上面函数的一个小例子:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int getword(char *s,char c,int num,char *sub);
void clear_space(char *s,char c);
int main()
{
    char *s=malloc(100);
    char *a;
    char d;
    char *sub=malloc(100);
    int num;
    strcpy(s," I am a student! Born to win LTW");
    printf("%s\n",s);
    d=' ';//delim

    while(1)
    {
        printf("Input the num of word:");
        fflush(stdin);
        scanf("%d",&num);
        num=getword(s,d,num,sub);
        if(num==0) printf("%s\n",sub);
        else
        {
            printf("num is wrong\n");
            return -1;
        }
    }
    free(s);
    free(sub);
    return 1;
}

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

上一篇:linux 下实现缓冲区溢出漏洞shellcode

下一篇:没有了

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