給定此字符串「紅色,藍色,綠色」創建一個包含這些顏色作爲其元素的數組。我在下面寫的代碼可行,但是當我將顏色的第一個字母改爲大寫時,我會得到輸出 - 紅色,藍色\ 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 –
我剛剛檢查了你的代碼,你到底想做什麼? –