gpt4 book ai didi

比较 2 个字符串并保存结果

转载 作者:行者123 更新时间:2023-12-04 09:07:26 29 4
gpt4 key购买 nike

#include <stdio.h>
#define MAX 1000
void any(char s1[], char s2[], char s3[]);
int main()
{
char string1[MAX], string2[MAX], string3[MAX];
printf("Jepni stringen 1\n");
scanf("%s", &string1); //saving string 1
printf("Jepni stringen 2\n");
scanf("%s", &string2); //saving string 2
any(string1, string2, string3); /*comparing characters from string 2 to string 1 and saving the places where they are equal on third string */
printf("%d", string3[0]); //printing the first character of the third string
return 0;
}

void any(char s1[], char s2[], char s3[])
{
int i, j, k;
k = 0;
for (j = 0; j != '\0'; j++) {
for (i = 0; i != '\0'; i++) {
if (s1[i] == s2[j]) {
s3[k] = i;
j++;
k++;
}
}
}
}

我正在尝试创建一个扫描 2 个字符串(将它们保存在字符串 1 和 2 上)的 c 程序,如果字符串 2 字符与字符串 1 相等,则使用函数 any 的程序将逐个字符地查看,如果它们是将给出找到它们的第一个位置。如果找不到任何东西,它会显示 -1。程序要求输入第一个相等的字符,这就是为什么我总是打印字符串 3 中的第一个字符。程序不工作,因为它总是打印-1。例如,如果我穿上字符串 1 dad在字符串 2 上,字符 d程序应显示 0 位置如果我把 dad 放在字符串 1在字符串 2 上我放了 a它应该显示 1

最佳答案

首先 for 循环没有开始,因为条件是 j 不为零。在 ASCII 中 '\0' 为零(可能不是在所有机器上),所以你更想检查 s2[ j] 不同于零。与 i 相同。
另一件事是 s3 是一个字符数组,所以把 s3[k]=i 并不等于'1'或'2',而是等于 1 或 2(ASCII 值),所以你应该将 48 添加到i(直到'9',然后你将有两位数字),或者使用 %d 格式说明符打印每个字符的字符串字符:

void any(char s1[], char s2[], char s3[])
{
int i, j, k;
k = 0;
for (j = 0; s2[j] != '\0'; j++) {
for (i = 0; s1[i] != '\0'; i++) {
if (s1[i] == s2[j]) {
s3[k] = i;
j++;
k++;
}
}
}
}

也许我遗漏了一些其他错误,尝试代码并运行它以查看它是否正确(还记得使用 %d 说明符来打印 s3)。

关于比较 2 个字符串并保存结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13324069/

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