您的位置:首页 > 运维架构

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

2013-04-28 09:29 274 查看

几个函数 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文件格式解析
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: