【发布时间】:2014-09-28 15:36:34
【问题描述】:
我刚开始学习 C 编程,为了练习,我找到了一项任务。首先我必须扫描两个字符串。然后我必须逐个字符地比较它们,如果有任何相同的字符,我必须打印出相同字符的数量。 它必须用指针来完成。所以让我有“boat”和“ship”,所以程序将返回 0。但如果它是“boat”和“soap”,它将返回 2。
这是我到目前为止所得到的,但是当我运行它时它给了我错误。我把错误放在 cmets 中。
提前感谢您的帮助。
#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 first[100];-->gets(first)-->number_of_same_characters(first, second)--> ...等 -
getsis evil。不要使用它。