c/c++语言开发共享Strtok和String操作问题

#define DELIMS "!"#$%&()|'*+,?/:;@[92]^_{}~177" void getFileLine(FILE *fp) { char *word, *ptr; int tokennum, count; char buffer[100]; while(!feof(fp)) { (fgets(buffer, 100, fp)); ptr = buffer; for(tokennum = 1; word = strtok(ptr, DELIMS);ptr = NULL, tokennum++) { word = strtok(ptr, DELIMS); printf("%sn", word); } } } 

所以我传入的文件中有一个示例程序。 我的工作是删除一些delims并将代码中的每个单词传递到树中。

虽然我不在树的一部分,只是努力让字符串按照我想要的方式进行操作,但我遇到了一些问题。

所以,当我从.txt文件中读取.txt ,我正在获得我想要的部分内容。 .txt的前几行如下:

 #include "stdafx.h" #include  #include  #include  #define FLUSH while( getchar()!= 'n') 

现在,在它运行我的代码后,它将其变为:

 include include include include define FLUSH while 

"中的单词被删除,因为它们是一些delim。我遇到的问题是define FLUSH while部分。当一行作为多个单词而不是delim时,我希望每个单词都是单独显示,输出:

 include include include include define FLUSH while 

如您所见, define FLUSH while现在将每个单词放在一个单独的行上。

我认为使ptr=NULL会导致strtok重用该行直到它到达终点,但我再次遇到一些麻烦。 任何建议/帮助都会很棒。 谢谢。

    问题是您定义for循环的方式:

    以下是代码的简化代码段:

     for (; word = strtok(ptr, DELIMS);ptr = NULL) { word = strtok(ptr, DELIMS); printf("%sn", word); } 

    这相当于:

     while(word = strtok(ptr, DELIMS)) { word = strtok(ptr, DELIMS); printf("%sn", word); ptr = NULL; } 

    注意你在每次迭代中如何调用strtok两次,但只打印一次? 这意味着您将丢失所有其他令牌。

    此外,你没有添加 (空格)到您的令牌列表,因此它不会在空格上分割。

      以上就是c/c++开发分享Strtok和String操作问题相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/519820.html

      (0)
      上一篇 2020年12月5日
      下一篇 2020年12月5日

      精彩推荐