c - 如何从这一行获取数组?

标签 c string

所以我有以下行

BOOK_NAME_VALUE STRING Programming

我需要让一个数组包含这个

a[0] = "BOOK_NAME";
a[1] = "VALUE";
a[2] = "STRING";
a[3] = "Programming";

数组的第二个值是该行第一部分的最后一部分; 行分隔符是空格 ' ' 第一部分分隔符是“_”

有什么想法吗??

更新

我在第二次分离过程中这样做了,需要更短的方法?

#include<string.h>

char **str_tok(char *str,char* d){
    char *out[2];
    char *s;
    char *c;
    int toks = noToks(str,d);
    int i = 0;

    s = strtok(str,d);
    i++;
    while(i != toks){
        strcat(s, d);
        c = strtok(NULL,d);
        i++;
        strcat(s,c);
    }
    strcpy(out[0],s);
    c = strtok(NULL,d);
    strcpy(out[1], c);

    return out;
}

int noToks(char *str,char *d){
    int c = 0;

    while(*str)
        if(*str == *d){
            c++;
            str++;
        }
    return c;
}

最佳答案

看一下 strtok 函数,该函数用于根据一组指定的分隔符分割字符串。

阅读here找到该函数的文档和一些示例..基本上你调用

char *cur = strtok(your_string," ");

获取第一个字符串,然后您可以继续使用NULL参数调用该函数来获取连续的字符串:

while (cur != NULL) {
  // do whatever
  cur = strtok(NULL," ");
}

关于c - 如何从这一行获取数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4161056/

相关文章:

c - 我的二维数组中数字的频率无法正确输出

c - 将两个 float 相乘并不能给出准确的结果

c - (posix)消息队列有读写器原理吗?

c++ - 存储 wchar_t 并在显示时有时会更改一些字符

c++ - 将 char 拆分为 char 数组

c - 在不使用加号运算符的情况下添加两个整数

c++ - 在字符串、u16string 和 u32string 之间转换

Python 循环中字符串比较

.net - VB日期转换

string - 对字符向量的 strsplit 进行 sapply 的替代方法