【发布时间】:2019-03-13 22:33:56
【问题描述】:
我的代码应该比较 2 个字符串并按字母顺序返回常见字符。如果没有公共字符,它将返回一个空字符串。
但是程序没有运行。
代码
void strIntersect(char *str1, char *str2, char *str3)
{
int i,j, k;
i = 0;
j = 0;
k = 0;
while(str1[i]!='\0' || str2[j]!='\0')
{
if(strcmp(str1[i],str2[j])>0)
{
str3[k] = str1[i];
k++;
}
else if (strcmp(str2[j],str1[i])>0)
{
str3[k] = str2[j];
k++;
}
i++;
j++;
}
}
例子
Input string 1:abcde
Input string 2:dec
Output: cde
如何让它工作?
【问题讨论】:
-
您正在描述函数返回的内容......但返回类型是
void,它没有返回任何内容。另外,我认为while条件下的||应该是&&。 -
strcmp比较 2 个字符串,而不是单个字符,所以strcmp(str1[i],str2[j])应该给你一个警告或错误。 -
这道题是关于集合交点的;不是字符串比较,可以在 O(n+m) 中完成(假设您对多字节字符不感兴趣,
n和m分别是两个字符串的长度。 -
你需要一个
main函数来调用你的函数strIntersect。 -
“程序没有运行”对您的问题没有帮助。
标签: c arrays string while-loop