gpt4 book ai didi

C - If/Else 和指针返回错误的字符串

转载 作者:太空宇宙 更新时间:2023-11-04 00:27:43 24 4
gpt4 key购买 nike

我们有一个函数longest,它返回由字母组成的最长子串。示例:

longest("112****hel 5454lllllo454")

将返回:lllllo

但是,当我运行该程序时,它似乎返回了 lllllo454。这是函数:

char *longest(char *s){
char *pMax = NULL;
int nMax = 0;
char *p = NULL;
int n = 0;
int inside = 0; //flag
while(*s!='\0'){
char c = *s;
if((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')){
if(inside == 0){
n = 1;
p = s;
inside = 1;
}
else
n++;
if(inside == 1){
if(n > nMax){
nMax = n;
pMax = p;
inside = 0;
}
}
}//end isLetter if
s++;
}
return pMax;
}

有些东西我在这里没有看到...你们怎么看?

最佳答案

您只是返回一个指向最长子字符串中第一个字符的指针。您实际上并没有在子字符串末尾后添加字符串终止符,因此它一直延续到原始字符串的末尾。您可能应该将子字符串(仅序列中的那些字符)复制到一个新字符串并返回指向它的指针。

 char* newStr = malloc(nMax+1);
strncpy( newStr, pMax, nMax );
*(newStr+nMax) = '\0';
return newStr;

关于C - If/Else 和指针返回错误的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1529170/

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