C 此程序中缺少/需要修复哪些内容?
我正在设置一个程序,如果我输入一个字符串,我需要使用一个带有这两个形式参数(指针和字符)的函数。每次我运行程序时,代码都不会使用实际参数运行我声明的函数 这是如何工作的 1) 输入我的字符串 2) 输入我想看到的字符是重复的 3) 该函数将运行for循环,以查看我的字符串(在数组中)中的哪些字符包含重复字符;每次它这样做时,它都会增加并合计重复的次数。下面是我的功能代码C 此程序中缺少/需要修复哪些内容?,c,string,pointers,repeat,C,String,Pointers,Repeat,我正在设置一个程序,如果我输入一个字符串,我需要使用一个带有这两个形式参数(指针和字符)的函数。每次我运行程序时,代码都不会使用实际参数运行我声明的函数 这是如何工作的 1) 输入我的字符串 2) 输入我想看到的字符是重复的 3) 该函数将运行for循环,以查看我的字符串(在数组中)中的哪些字符包含重复字符;每次它这样做时,它都会增加并合计重复的次数。下面是我的功能代码 int main(void) { char string[100], rep_char = 'c', *ptr
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++;
}
int main(无效)
{
字符字符串[100],rep_char='c',*ptr=string[0];
int charcnt(char*ptr,char c);
printf(“输入字符串:”);
获取(字符串);
printf(“%i”,strlen(字符串));
printf(“\n要检查字符串中的哪个字符是否重复?”);
扫描字符(“%c”和“rep_char”);
字符(*ptr,rep_char);
getch();
返回0;
}
int charcnt(char*ptr,char c)
{
int rep=0;
字符串[100];
for(int i=0;i
我希望能像这样跑
[预期]:
输入字符串:您好
您要检查字符串中的哪个字符是否重复?l
二,
相反,我得到
[实际]:
输入字符串:您好
您要检查字符串中的哪个字符是否重复?l以下是我在您的程序中发现的问题
charcnt函数保存甚至打印返回的结果
if条件可以是if(ptr[i]==c)
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++;
}
intmain(){
字符字符串[100],rep_char='c';
int charcnt(char*ptr,char c);
printf(“输入字符串:”);
获取(字符串);
printf(“%i”,strlen(字符串));
printf(“\n要检查字符串中的哪个字符是否重复?”);
scanf(“%c”和rep_char);
printf(“\n%d”,字符(字符串,rep_char));
getch();
返回0;
}
int charcnt(char*ptr,char c){
int rep=0;
对于(int i=0;i
这段代码甚至不应该编译。您将一个char分配给一个char指针,当函数需要char指针时,您将给它一个char函数。您使用的是哪种编译器?它真的不抱怨这些事情吗?也要始终标记您使用的语言。我在Microsoft Visual Studio 2017上使用的是C。我的教授说代码应该可以运行,但这不是出于某种原因。顺便说一句,我是StackOverflow的新手。编译器真的没有给出任何警告吗?将它们设置为最大值,并修复它警告的所有内容。请参见:。通过检查返回值来验证每个输入,避免getch()
和conio.h
,这会使您的代码100%不可移植到除DOS/windows以外的任何其他系统。相反,只需使用stdio.h
和getchar()
在代码末尾保留终端窗口(相同的结果)。void swap应该做什么?它的代码甚至没有显示出来!我已经编辑过了。现在代码运行得很好。