c - 函数从 C 中的字符串创建数组,无需 strtok

标签 c arrays string function c-strings

给定一个字符串“红、黄、蓝、绿”,我需要编写一个函数来创建一个以颜色为元素的数组。我无法找到有关此问题的信息,因为不允许我使用 strtok 或 string.h 中的任何字符串操作函数。有什么建议吗?

这是我的代码:

int findLength(char string[]){
    int l =0;

    for(l = 0; string[l]!='\0'; l++){

    }
    return l;
};


char *stringToArray(char string[]){
    int i = 0;
    int j = 0;
    char c = ',';
    int n = 0;
    int l = findLength(string);

    char *str = (char *)malloc(l * sizeof(char));

    while(string[i] != '\0'){
        if(string[i] == c){
            for(n = j; n < i; n++){
                str[j++] += string[n];
            }

        }
        i++;
    }
    printf("%s\n", str);
    str = '\0';
    return str;
}


int main(int argc, const char * argv[]) {

    char *string = "red, blue, green,";
    char *str = stringToArray(string);
    free(str);

    return 0;

}

最佳答案

迭代字符串直到找到逗号。然后将从开始到该点的所有内容复制到数组中的单独字符串中。

继续迭代,直到找到另一个逗号,然后将所有内容从上次停下的位置复制到数组中的另一个字符串中。

重复此操作,直到到达字符串末尾。另外,请务必在找到每个逗号后跳过所有空格。

关于c - 函数从 C 中的字符串创建数组,无需 strtok,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35781044/

相关文章:

c - Node* root 和 Node *root 的区别

在 C 中检查越界

java - 使用哪个阵列?

java - 在 StringBuilder 中的最后一个字符串之后优雅地删除 "\n"分隔符

java - C、Java 或 PHP 中的语音识别?

c - 打印文件中字符串的所有 k 聚体

arrays - MongoDB - 更新多个数组中的元素

java - 使用 Point2D 中的距离将变量与数组进行比较

java - 找到最小的子段

c - 如何将字符串拆分为字符串数组?