我正在设置一个程序,如果我键入一个字符串,则需要使用具有这2个形式参数(指针和字符)的函数。每次我运行程序时,代码都不会通过带有实际参数的声明函数运行。
这是如何工作的...
1)输入我的字符串
2)重复输入我想看的字符
3)该函数将运行一个for循环,以查看我的字符串(位于数组中)的哪些字符包含重复的字符;每次这样做,它将增加并总计重复的次数。下面是我的功能代码...
int main(void)
{
char string[100], rep_char = 'c', *ptr = string[0];
int charcnt(char *ptr, char c);
printf("Input your string: ");
gets(string);
printf("%i", strlen(string));
printf("\nWhich character in the string are you checking for repetition? ");
scanf_s("%c", &rep_char);
charcnt(*ptr, rep_char);
getch();
return 0;
}
int charcnt(char *ptr, char c)
{
int rep = 0;
char string[100];
for (int i = 0; i < strlen(string); i++)
{
*ptr = string[i];
if (string[i] == c)
{
rep++;
}
}
return rep++;
}
我希望这样跑。...
[预期]:
输入您的字符串:您好。
您要检查字符串中的哪个字符重复吗? l
2
相反,我得到...
[实际]:
输入您的字符串:您好。
您要检查字符串中的哪个字符重复吗? l
答案 0 :(得分:-2)
以下是我在您的程序中发现的问题。
charcnt function
返回的结果。if condition
可以是if(ptr[i] == c)
答案 1 :(得分:-2)
检查一下!
int main() {
char string[100], rep_char = 'c';
int charcnt(char * ptr, char c);
printf("Input your string: ");
gets(string);
printf("%i", strlen(string));
printf("\nWhich character in the string are you checking for repetition? ");
scanf("%c", & rep_char);
printf("\n%d", charcnt(string, rep_char));
getch();
return 0;
}
int charcnt(char * ptr, char c) {
int rep = 0;
for (int i = 0; i < strlen(ptr); i++) {
if (ptr[i] == c) {
rep++;
}
}
return rep++;
}