【问题标题】:How to split the a string into separate words in C, where the space is not constant?如何在C中将a字符串拆分为单独的单词,其中空格不是恒定的?
【发布时间】:2020-04-02 04:04:51
【问题描述】:

这是正在读取的文件的格式:

键入                                        扩展名

应用程序/数学          nb ma mb
应用程序/mp21                      m21 mp21

我能够从文件中读取每个条目。 现在我想制作一个 key-value 对,其中上述条目的输出类似于
{nb: application/mathematica}
{ma:application/mathematica}

等等。

这是我当前的代码,用于简单地阅读条目

 char buf[MAXBUF];
 while (fgets(buf, sizeof buf, ptr) != NULL)
    {
        if(buf[0] == '#' || buf[0] == '\n')
            continue;  // skip the rest of the loop and continue



        printf("%s\n", buf);
}

【问题讨论】:

  • 阻止编码的问题是什么?
  • 这能回答你的问题吗? store known key/value pairs in c
  • 如果您使用 strtok()(或者,更好的是,在 POSIX 上使用 strtok_r() 或在 Windows 上使用 strtok_s()),或者如果您使用 sscanf()(请参阅 Using `sscanf() in a loop 以了解有用的信息)信息),然后它们都像跳过单个空白一样愉快地跳过多个空白。像你一样跳过评论和空白行通常是个好主意——做得好。是时候诚实地尝试拆分过程了。

标签: c arrays string key-value fgets


【解决方案1】:

“C中如何将a字符串拆分成单独的单词,其中空格不固定?”

一个简单的答案是使用 strtok()(string.h 库),但请记住,此函数会影响您的初始字符串。所以,如果你想再次使用它,你应该使用一个等于你的初始字符串的临时变量。

char *p = strtok(char *str, const char *delim)

你应该在哪里放置 delim :" "。

基本上,strtok 根据给定的分隔符分割你的字符串。

在这里,我给你一个strtok的例子:

char* p = strtok(str," ");
while(p != NULL){
   printf("%s\n",p);
   p=strtok(NULL," ");
}

【讨论】:

    猜你喜欢
    • 2018-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多