gpt4 book ai didi

c 检查两个字符串是否有相同的字符

转载 作者:太空宇宙 更新时间:2023-11-04 01:29:07 26 4
gpt4 key购买 nike

我刚开始学习 C 编程,为了锻炼我找到了一项任务。首先,我必须扫描两个字符串。然后我必须逐个字符地比较它们,如果有任何相同的字符,我必须打印出相同字符的数量。它必须用指针来完成。所以让我有“船”和“船”,这样程序将返回 0。但是如果它是“船”和“肥皂”,它将返回 2。

这是我到目前为止所得到的,但是当我运行它时它会给我错误。我把错误放在评论中。

预先感谢您的帮助。

<p></p>

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

int number_of_same_characters(char *, char *);

int main()
{
char * first[100];
char * second[100];
int result = 0;

printf("Enter first string\n");
gets(*first);

printf("Enter second string\n");
gets(*second);

result = number_of_same_characters(*first, *second);
printf("%d\n", result);
return 0;
}

int number_of_same_characters(char *p, char *q){ //i get this error here - error: invalid type argument of unary ‘*’ (have ‘int’)
int counter = 0;

for(int j = 0; *p[j] != '\0' || *q[j] != '\0'; ++j){ //i get this error here - error: invalid type argument of unary ‘*’ (have ‘int’)
if(strcmp(*p[j], *q[j])){
++counter;
}
}
return counter;
}

最佳答案

主要是你有很多额外的 * 乱扔程序。变量声明应该是:

char first[100];
char second[100];

输入调用应该是:

gets(first);
gets(second);

方法调用应该是:

result = number_of_same_characters(first, second);   

最后,for 循环中不应该有任何取消引用。

for(int j = 0; p[j] != '\0' || q[j] != '\0'; ++j){     
if(strcmp(p[j], q[j])){
++counter;
}
}

这会让你更接近,尽管仍然存在一些问题。作为提示,|| 运算符是可疑的,您不需要使用 strcmp

值得指出的是,gets() 是一个可能导致缓冲区溢出的危险函数。刚开始使用是可以的,但不要让它成为一种习惯,永远不要在生产代码中使用它!

关于c 检查两个字符串是否有相同的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26086539/

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