我不確定如果我只是非常愚蠢的,但我已經使這個函數應該從一個數組中的字符,並選擇性地把他們在另一個去除空間和標點符號。但是,返回似乎只是第一個字符(來自printf)。C:功能沒有返回完整的字符串
char * getWord(char *array) {
char *temp = malloc(sizeof(char) * 20);
int i= 0;
while(i < 20) {
if(validChar(array[i])) {
printf("pass 1 - %c\n", array[i]);
temp[i] = array[i];
printf("pass 2 - %c\n", temp[i]);
i=i+1;
}
else {
i=i+1;
}
}
printf("%s\n", temp);
return temp;
}
的validChar功能:
bool validChar(char given) {
char a[]=". ,;:*!?'-\n\r";
for(int q = 0; q <=12; q++) {
if(given == a[q]){
return false;
}
}
return true;
}
在每個 「通2」 時,正確的打印示出這樣的循環正在按預期。我真的不明白的是,當我刪除條件來選擇有效的字符時,最終的打印語句按預期工作並打印整個字符串。
沒有'validChar'中的for循環只運行到11? –
「但是,返回的結果似乎只是第一個字符(來自printf)。」 - 真的嗎?顯示重現此行爲的代碼。 –