当前位置: 首页 > news >正文

成全免费观看在线看seo快速排名源码

成全免费观看在线看,seo快速排名源码,查询网站备案,建筑设计网站网址strtok() strtok 是 C 语言库中的一个函数#xff0c;用于在字符串上执行分词操作。这意味着它可以用于将字符串分解成多个标记或段#xff0c;这些标记之间由指定的分隔符分隔。 以下是 strtok 函数的原型#xff1a; char *strtok(char *str, const char *delim);参数用于在字符串上执行分词操作。这意味着它可以用于将字符串分解成多个标记或段这些标记之间由指定的分隔符分隔。 以下是 strtok 函数的原型 char *strtok(char *str, const char *delim);参数 str: 要分词的字符串。在首次调用时此参数应指向欲分解的字符串。在后续的调用中为了获取其他的标记这个参数应当为 NULL。delim: 一个包含所有分隔符字符的字符串。当 strtok 在 str 中发现这些字符时它会认为这是一个分隔符并据此分解字符串。 返回值 如果找到一个标记则返回指向该标记的指针。如果没有找到标记或已经达到字符串的末尾则返回 NULL。 注意事项 不可重入: strtok 在内部使用静态缓冲区来保存当前的位置这意味着它不是线程安全的和不可重入的。对于多线程应用程序或需要同时分解多个字符串的应用程序推荐使用 strtok_r 函数如果可用。 修改原字符串: strtok 会在找到的分隔符位置放置 ‘\0’ 字符这样会修改输入字符串。 示例 #include stdio.h #include string.hint main() {char string[50] Hello,world,this,is,a,test;char *token strtok(string, ,); // 使用逗号作为分隔符while(token ! NULL) {printf(%s\n, token);token strtok(NULL, ,);}return 0; }输出 Hello world this is a test在此示例中字符串 Hello,world,this,is,a,test 被逗号分隔并且每个标记都被单独打印出来。 strtok_r() strtok_r 是一个分词函数与 strtok 功能类似但它是线程安全的和可重入的。这得益于其额外的参数该参数用于保存函数的内部状态而不是像 strtok 那样使用静态缓冲区。 函数原型 char *strtok_r(char *str, const char *delim, char **saveptr);参数 str: 要分词的字符串。在首次调用时此参数应指向欲分解的字符串。在后续的调用中为了获取其他的标记这个参数应当为 NULL。delim: 一个包含所有分隔符字符的字符串。当 strtok_r 在 str 中发现这些字符时它会认为这是一个分隔符并据此分解字符串。saveptr: 一个指向字符指针的指针它用于存储函数的内部状态使函数可以在后续调用中恢复其上下文。 返回值 如果找到一个标记则返回指向该标记的指针。如果没有找到标记或已经达到字符串的末尾则返回 NULL。 注意事项 与 strtok 相比strtok_r 的优势在于它不会修改全局或静态变量因此它在多线程环境中是安全的。 示例 #include stdio.h #include string.hint main() {char string[50] Hello,world,this,is,a,test;char *token;char *saveptr; // 用于保存 strtok_r 的内部状态token strtok_r(string, ,, saveptr);while(token ! NULL) {printf(%s\n, token);token strtok_r(NULL, ,, saveptr);}return 0; }输出 Hello world this is a test在此示例中字符串 Hello,world,this,is,a,test 被逗号分隔并且每个标记都被单独打印出来就像使用 strtok 函数那样。但由于使用了 strtok_r 和 saveptr此代码在多线程环境中也是安全的。 strtok() 线程不安全 使用 strtok 在多线程环境中不是线程安全的。下面我们来看个例子。 在这个例子中尝试在两个线程中使用 strtok 来分词两个字符串。但请注意由于 strtok 使用静态内部存储来保持其状态这可能会导致不可预测的行为 #include stdio.h #include stdlib.h #include string.h #include pthread.hvoid* tokenizeString(void* arg) {char* data (char*) arg;char* token;token strtok(data, ,);while (token ! NULL) {printf(Thread %ld: %s\n, pthread_self(), token);token strtok(NULL, ,);}pthread_exit(NULL); }int main() {pthread_t threads[2];char threadStrings[2][50] {Hello,world,this,is,thread,one,Another,string,for,thread,two};for(int t 0; t 2; t) {int rc pthread_create(threads[t], NULL, tokenizeString, threadStrings[t]);if (rc) {printf(ERROR; return code from pthread_create() is %d\n, rc);exit(-1);}}// Wait for all threads to completefor(int t 0; t 2; t) {pthread_join(threads[t], NULL);}pthread_exit(NULL);return 0; }由于 strtok 的静态存储特性当多个线程尝试访问它时其中一个线程可能会“接管”另一个线程的分词过程。这可能导致某些标记被忽略或重复或者出现其他不可预测的行为。 程序运行结果如下 Thread 139977209935424: Hello Thread 139977209935424: string Thread 139977209935424: for Thread 139977209935424: thread Thread 139977209935424: two Thread 139977201542720: Another建议在多线程环境中应该避免使用 strtok而是使用 strtok_r 或其他线程安全的分词方法。 strtok_r() 线程安全 下面是一个在多线程环境中使用 strtok_r 对两个字符串进行分词的示例。 我们创建两个线程每个线程处理一个字符串并使用 strtok_r 对其进行分词。 #include stdio.h #include stdlib.h #include string.h #include pthread.htypedef struct {char string[50];const char *delimiter; } ThreadData;void* tokenizeString(void* arg) {ThreadData* data (ThreadData*) arg;char *token;char *saveptr;token strtok_r(data-string, data-delimiter, saveptr);while (token ! NULL) {printf(Thread %ld: %s\n, pthread_self(), token);token strtok_r(NULL, data-delimiter, saveptr);}pthread_exit(NULL); }int main() {pthread_t threads[2];ThreadData threadData[2] {{Hello,world,this,is,thread,one, ,},{Thread-two:splitting|by|pipes, |}};for(int t 0; t 2; t) {int rc pthread_create(threads[t], NULL, tokenizeString, threadData[t]);if (rc) {printf(ERROR; return code from pthread_create() is %d\n, rc);exit(-1);}}// Wait for all threads to completefor(int t 0; t 2; t) {pthread_join(threads[t], NULL);}pthread_exit(NULL);return 0; }在本例中我们为每个线程定义了一个 ThreadData 结构该结构包含要分词的字符串和相应的分隔符。我们在多线程环境中安全地使用了 strtok_r因为它不依赖于全局或静态变量来保存其状态。 程序运行结果如下 Thread 140242684208704: Thread-two:splitting Thread 140242684208704: by Thread 140242684208704: pipes Thread 140242692601408: Hello Thread 140242692601408: world Thread 140242692601408: this Thread 140242692601408: is Thread 140242692601408: thread Thread 140242692601408: one
http://wiki.neutronadmin.com/news/245751/

相关文章:

  • 美容美发网站模板本地东莞网站建设
  • 永久免费的网站地址建设公司网站的申请
  • 杭州cms建站模板怎么封闭网站
  • 旅游公司电子商务网站建设策划书建筑工程网络计划技术与应用
  • 怎样做淘宝券网站建站平台营销
  • 深圳做网站公司有哪些seo和网络推广哪个好
  • 网站设计包含哪些技术做爰全过程免费的视频99网站
  • 网站的欢迎页怎么做简易的网站模板
  • 毕业设计做一个网站怎么做北京网站设计工资多少
  • 网站百度收录查询seo权威入门教程
  • 做网站教程pdf哪个dns访问国外网站
  • 南昌网站建设资讯百度推广管理平台
  • wordpress建立论坛网站专门做网站建设的公司
  • 美食网站的建设目的搜狗推广登录入口
  • 怎么样自己建设网站[ 1500元做网站_验收满意再付款! ]_沛县网络公司
  • 代做设计网站网站分享代码怎么加
  • 站长工具seo综合wordpress能恢复数据库
  • 网站推广服务chuseo北京网站建设 app
  • 海南行指三亚网站开发最权威最有效的投诉平台
  • 网站开发设计步骤什么样的网站快速盈利
  • 衡阳seo优化seo推广官网
  • 清远网站seo新开最好的传奇网站
  • 可以做h5的网站湖北企业建站系统平台
  • 基层组织建设部 网站怎样用别人的网站做修改病句
  • vs2013做网站保存的格式如何评价网站是否做的好
  • 网站综合查询工具做网站的公司有多少家
  • 国外免费网站服务器可以做调查问卷的网站
  • 找熟人做网站的弊端网站管理和建设工作职责
  • 东莞大岭山做网站公司网站开发强制使用急速内核
  • 已有备 网站新增网站图片展示网站建设