几个函数 strrchr,strchr,strtok,getOpenFilename。

几个函数 strrchr,strchr,strtok,getOpenFilename。

(2012-04-19 20:11:26)

转载

标签:

杂谈

分类: C

语言函数strrchr

函数简介

  函数名称: strrchr

  函数原型:char*strrchr(char *str, char c);

  所属库: string.h

  函数功能:查找一个字符c在另一个字符串str中末次出现的位置(也就是从str的右侧开始查找字符c首次出现的位置),并返回该位置。如果未能找到指定字符,那么函数将返回NULL。

 

int main()
{
 char st[] = "D:\\code From JUNTAO\\bvh_player\\bvh files";
 //char* c = '\\';
 char* ptr ;
 ptr = strrchr(st,'\\');

 if(ptr)
  printf("The character \ is at position: %s\n",ptr);
 else
  printf("The character was not found\n");
 
 return 0;
}

输出结果:The character  is at position:\bvh files

// 本意是查找字符串中的反向的第一个反斜杠位置,但是必须要加上转义符\,即\\.

 

类似函数 输出结果: The character isat position:\code From JUNTAO\\bvh_player\\bvh files

===============================================================================================

strtok

 

 

原型  char *strtok(char *s, constchar *delim);

编辑本段功能

  分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。

编辑本段说明

  strtok()用来将字符串分割成一个个片段。参数s指向欲分割的字符串,参数delim则为分割字符串,当strtok()在参数s的字符串中发现到参数delim的分割字符时则会将该字符改为\0 字符。在第一次调用时,strtok()必需给予参数s字符串,往后的调用则将参数s设置成NULL。每次调用成功则返回被分割出片段的指针。

 

int main()
{
 char st[] = "D:\\code From JUNTAO\\bvh_player\\bvh files";
 //char* c = '\\';
 char     separater[] = "\\";
 char* ptr ;
 ptr = strtok(st,separater);

 if (ptr)
  printf("%s\n", ptr);

 ptr = strtok(NULL,",");
 if (ptr)
  printf("%s\n", ptr);
 
 
 return 0;
}

 

第一次输出: D:

第二次输出:code From JUNTAO\bvh_player\bvh files

======================================================================================

 

GetOpenFileName

  函数功能:该函数创建一个Open公共对话框,使用户指定驱动器、目录和文件名、或使用户打开文件。

  函数原型:BOOLGetOpenFileName(LPOPENFILENAME Ipofn);

  参数:

  Ipofn:指向包含初始化对话框的信息的一个OPENFILENAME结构。当OpenfileName函数返回时,此结构包含有关用户文件选择的信息。

  返回值:如果用户指定了一个文件名,点击OK按钮,返回值为非零。由OPENFILENAME结构的IPstrFile成员指向的缓冲区含有全路径和用户指定的文件名。如果用户取消或关闭Open对话框或错误出现,返回值为零。若想获得更多的错误信息,请调用CommDlgExtendedError函数。

if ( (key == 'L') || (key == 'l') )
 {
#ifdef  WIN32
  const int  file_name_len = 256;
  char  file_name[ file_name_len ] ="";

  OPENFILENAME open_file;
  memset( &open_file, 0, sizeof(OPENFILENAME) );
  open_file.lStructSize = sizeof(OPENFILENAME);
  open_file.hwndOwner = NULL;
  open_file.lpstrFilter = "BVH Motion Data(*.bvh)\0*.bvh\0All (*.*)\0*.*\0";
  open_file.nFilterIndex = 1;
  open_file.lpstrFile = file_name;
  open_file.nMaxFile = file_name_len;
  open_file.lpstrTitle = "Select a BVH file";
  open_file.lpstrDefExt = "bvh";
  open_file.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST |OFN_HIDEREADONLY;

  BOOL ret = GetOpenFileName( &open_file );

  if( ret )
  {
   if ( bvh )
    delete  bvh;
   bvh = new BVH( file_name );

   if (!bvh->IsLoadSuccess() )
   {
    delete  bvh;
    bvh = NULL;
   }

   animation_time= 0.0f;
   frame_no = 0;
  }
#endif
 }

分享: 分享到新浪Qing

喜欢

阅读 评论收藏 ┊转载 ┊ 喜欢打印┊举报

已投稿到:

排行榜

加载中,请稍候......

前一篇:error LNK2005: _strncmp already defined

后一篇:[转载]表示三维运动的BVH文件格式解析

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值