如何从C中用逗号分隔的字符串中获取子字符串

时间:2014-12-10 04:23:35

标签: c substring arrays

我想从编程语言C

中获取数组中的子数组

例如,如果我有一个char数组:

c[]= "Peter,peter911@hotmail.com,213342,IGE

d[]= "JohnSilva,johnsilva@hotmail.com,213342,ETI

问题是,我想要一个通用代码,当给定索引,数组和分隔索引的char时,它会将以下索引从逗号到另一个逗号放入array.Index从0开始/ p>

示例:d [],index = 1,separator:','

结果= johnsilva@hotmail.com

main(){
    char delimitador;
    char linha[100];
    int index;
    printf("index\n");
    scanf("%d",index);
    printf("char delimitador\n");
    scanf("%c",caractere);
    printf("linha"\n");
    scanf("%c",linha);
    char vector[50];
    int i=0;
    int contador;
    while(i!=index){
        contador++;
        if(c[contador]==delimitador){
            strncpy(vector,linha,contador-1);
            i++;
        }
    }
}

4 个答案:

答案 0 :(得分:1)

#include <stdio.h>

char *get_field(char *out_buff, const char *csv, int index, char separator){
    int i;
    char *p = out_buff;
    for(i=0; i < index && *csv; ++csv){
        if(*csv == separator)
            ++i;//count separator
    }
    if(i == index){
        while( *csv && *csv != separator )
            *p++ = *csv++;//cut out
    }
    *p = '\0';
    return out_buff;
}

int main(void){
    char d[]= "JohnSilva,johnsilva@hotmail.com,213342,ETI";
    char vector[50];
    get_field(vector, d, 1, ',');
    puts(vector);
    return 0;
}

答案 1 :(得分:0)

您可以使用 strtok 函数来标记给定字符串。

了解更多信息,请访问指定链接。 strtok()

答案 2 :(得分:0)

可以使用Strtok功能。但是如果你不熟悉这个函数,那么char读取字符串的简单char会有所帮助。检查一下:http://wethecomputerguys.com/2014/12/10/break-string-using-index-and-separator/ ..希望它可以帮助你..

答案 3 :(得分:0)

阅读字符串解析,然后编写一个字符串解析函数,返回第n个逗号和下一个逗号之间的所有内容,然后使用char *foo[]形式的数组。

字符串解析:获取逗号数,选择所需的一个,在两者之间获取字符串,make array。