Chinaunix首页 | 论坛 | 博客
  • 博客访问: 512660
  • 博文数量: 68
  • 博客积分: 5011
  • 博客等级: 大校
  • 技术积分: 806
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-30 22:06
文章分类
文章存档

2011年(1)

2009年(8)

2008年(59)

我的朋友

分类: C/C++

2008-07-14 17:48:10

 #include "stdio.h"
#include "stdlib.h"
#include "string.h"
int makeargv(const char*s, const char*delimiters,char ***argvp);
int main(int argc ,char *argv[])
{
 char delim[]="\t";
 int i,j;
 char **myargv;
 int numtokens;
        char *t="abc 123  @#";
    if((numtokens=makeargv(t,delim,&myargv))==-1)
 {
  printf("error for s%\n",argv[1]);
  return 1;
 }
 for(i=0;i  printf("%d:s%\n",i,myargv[i]);

  return 0;
}
int makeargv(const char*s, const char*delimiters,char ***argvp)
{
 int i;
 int numtokens;
 const char * snew;
 char *t;
 if(s==NULL||delimiters==NULL||argvp==NULL)
 {
  return -1;
 }
 *argvp=NULL;
 snew=s+strspn(s,delimiters);
 if((t=malloc(strlen(snew)+1))==NULL)
return -1;
 strcpy(t,snew);
 numtokens=0;
 if(strtok(t,delimiters)!=NULL)
  for(numtokens=1;strtok(NULL,delimiters)!=NULL;numtokens++)
   if((* argvp=malloc((numtokens+1)*sizeof(char*)))==NULL)
   {
    free(t);
    return -1;
   }
         if(numtokens==0) free(t);
   else
   {
    strcpy(t,snew);
                         **argvp=strtok(t,delimiters);
                          for(i=1;i    *(*(argvp)+i)=strtok(NULL,delimiters);
   }
    *((*argvp)+numtokens)=NULL;
    return numtokens;
  
}

昨晚修改程序,发现我用strtok()方法不对,strtok分割字符串

应该把 char delim[]="\t";改成 char delim[]=" ";

char *t="abc 123  @#";改成 char t[]="abc 123  @#";

然后运行一切正常,小组任务快完成了

 

该总结本星期学习:

1》 java续着上星期看,也明白是怎样实现平台无关性,是虚拟机提供可操作接口实现的。

2》java图形实现功能强大,希望自己在学校实习前看完,再当然还要实现下,书是看的,但实现才更能明白它的价值

3》这个星期成功是早起啦,没有贪睡迟到,呵呵

4》操作系统正在学着,希望能明白计算机工作原理

写的粗略,继续加油

学习的过程是平淡的,又是充满激情的。

阅读(2433) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~