gpt4 book ai didi

C: 函数不返回完整字符串

转载 作者:太空宇宙 更新时间:2023-11-04 08:19:39 25 4
gpt4 key购买 nike

我不确定我是不是真的很笨,但我制作的这个函数应该从一个数组中获取字符,然后有选择地将它们放入另一个数组中,以删除空格和标点符号等内容。但是,返回的似乎只是第一个字符(来自 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”中,都会显示正确的打印,因此循环按预期工作。我真的不明白的是,当我删除条件以选择有效字符时,最终打印语句会按预期工作并打印整个字符串。

最佳答案

首先,您只对 getWord 中的两个字符串使用一个计数器。您必须将字符串的读取与 i 的写入与 temp 字符串的写入与另一个计数器分开,比如 jj 只会在您实际向 temp 添加一些字符时递增。

最后,您在 getWord 中的 printf 之前缺少 temp 的结尾 '\0' .

关于C: 函数不返回完整字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33975028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com