c - C语言中如何从逗号分隔的字符串中获取子字符串

标签 c substring arrays

我想从编程语言C中的数组中获取子数组

例如,如果我有一个字符数组:

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

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

问题是,我想要一个通用代码,当给定一个索引、一个数组和一个分隔索引的字符时,它将把以下索引(从一个逗号到另一个逗号)放入数组中。索引从 0 开始

示例:d[],索引=1,分隔符:','

结果= 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++;
        }
    }
}

最佳答案

#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;
}

关于c - C语言中如何从逗号分隔的字符串中获取子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27393330/

相关文章:

java - java中无法返回数组?

c - 向下舍入浮点结果

c - 重新初始化已在其他源文件中定义的全局变量

java - 查找字符串中的子字符串

javascript - 如何在 Javascript 中获取字符串突出显示部分的起始和结束索引?

php - 根据第一列值合并两个索引数组的索引数组

将输入与两个字符进行比较,会产生奇怪的警告

c - 为什么 ftell( stdin ) 导致非法查找错误

c - C 中围绕字符分割字符串

java - 数组列表超出范围