c - 如何在C中将a字符串拆分为单独的单词,其中空格不恒定?

标签 c arrays string key-value fgets

以下是正在读取的文件的格式:

类型                                            扩展名

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

我能够读取文件中的每个条目。 现在我想创建一个键值对,其中上述条目的输出类似于
{nb: 应用程序/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);
}

最佳答案

“如何在 C 中将字符串拆分为单独的单词,其中空格不恒定?”

一个简单的答案是使用 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," ");
}

关于c - 如何在C中将a字符串拆分为单独的单词,其中空格不恒定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59242330/

相关文章:

C 返回函数参数。为什么这有效?

javascript - 如何更改字符串的输出?

java - 我无法理解如何将数组传递给方法并返回数组列表

Java pad 地址转为 64 位

javascript - 在字符串中查找大写字符

c - 仅与多个子进程之一共享内存?

c - Hello world 加密对 main 的递归调用

ios - 在 Objective-C 中填充 NSMutableArray 时出现问题

javascript - 将对象转换为字符串

c++ - 重新分配指针给出错误