gpt4 book ai didi

c - 查找字符串中的公共(public)字符

转载 作者:太空宇宙 更新时间:2023-11-03 23:40:48 24 4
gpt4 key购买 nike

您好,我有两个不同的字符串,我需要找到字符串中的公共(public)字符。我设法获得了通用字符串,但我需要为不具有相同字符的输入返回“空字符串”。

当前问题:

输入1:abc
输入 2: def
output: '//它应该是 "null string";

这是我的代码:

#include <stdio.h>
#include <string.h>

void strInterset(char * str1, char * str2, char * str3);

int main() {
char str1[50], str2[50], str3[50];

printf("Enter str1: \n");
scanf("%s", str1);
printf("Enter str2: \n");
scanf("%s", str2);
strInterset(str1, str2, str3);

if (*str3 == '\0')
printf("strIntersect(): null string\n");
else
printf("strIntersect(): %s\n", str3);

return 0;
}

void strInterset(char * str1, char * str2, char * str3) {
int i = 0, j;
for (i; *(str1 + i) != '\0'; i++) {
for (j = 0; *(str2 + j) != '\0'; j++) {
if ( *(str2 + j) == *(str1 + i)) {
strcpy(str3, str1 + i);
str3++;
}
}
}
}

最佳答案

原因是 strInterset() 仅在找到匹配项时调用 strcpy(),而不会修改 str3 或否则它指向的数据。修复很简单 - 在 strInterset() 的循环之前添加语句

 *str3 = '\0';

如果找到匹配项,strcpy() 仍将被调用。否则,在 main() 中完成的测试将会成功。

main() 中的数组初始化为零也适用于 strInterset() 的第一次调用。它可能不适用于后续调用(除非 main() 在每次调用之前重新初始化 str3)。因此,最好在 strInterset() 中进行初始化。

关于c - 查找字符串中的公共(public)字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46601202/

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