【发布时间】:2015-11-28 18:41:30
【问题描述】:
我不确定我是不是真的很笨,但是我创建的这个函数应该从一个数组中获取字符并有选择地将它们放入另一个数组中以删除空格和标点符号等内容。然而,返回的似乎只是第一个字符(来自 printf)。
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;
}
在每个“pass 2”中,都会显示正确的打印,因此循环按预期工作。我真正不明白的是,当我删除条件以选择有效字符时,最终的打印语句按预期工作并打印整个字符串。
【问题讨论】:
-
validChar中的for循环不应该只运行到 11 吗? -
“但是,返回的似乎只是第一个字符(来自 printf)。” - 哦真的吗?显示重现此行为的代码。