给定此字符串“红色,蓝色,绿色”创建一个包含这些颜色作为其元素的数组。我在下面写的代码可行,但是当我将颜色的第一个字母改为大写时,我会得到输出 - 红色,蓝色\ 301-!Wree \ 316。我怎样才能让这段代码更具动态性,能够处理以大写字母开头的单词呢?谢谢。C字符串到数组 - 字符串错误
#include <stdio.h>
#include <stdlib.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] != l){
if(string[i] == c || string[i] != '\0'){
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 *string = "Red, Blue, Green";
char *str = stringToArray(string);
free(str);
return 0;
}
你的程序实际上应该做什么?它似乎只是复制一个字符串。它应该改变或解析它以某种方式?另外,你已经重新创建了'strlen()'函数。不知道你为什么这样做。最后,你是'malloc()'单个字节的内存。你很幸运'j'没有被增加,否则你的程序会出现分段/崩溃。 – DevNull
我正在学习数组和字符串,我不允许使用strlen()或string.h中的任何字符串操作函数。我写这段代码的确切问题是 - 给这个字符串:“红色,蓝色,绿色” - 创建一个包含这些国家作为其元素的数组。注意:逗号是分隔符。代码有效,但是当我改变每种颜色以大写字母开头时,它不再起作用。 @Dogbert –
我刚刚检查了你的代码,你到底想做什么? –