给定一个字符串和一个字符,我必须找到字符串中存在字符的次数。
这是我到目前为止所做的:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
main ()
{
char string[10];
char c1, c2;
int contador, i, l, n;
printf ("Introduza uma string e dois caracteres.\n");
scanf ("%s %c %c", &string[i], &c1, &c2);
l = strlen (string);
contador = 0;
for (n = 0; n < l; n++)
{
if (c1 == string[i])
{
contador = contador + 1;
}
}
printf ("%d\n", contador);
}
printf中的文本是葡萄牙语,它的意思是“引入一个字符串和两个字符”。第二个角色是以后的。
非常感谢你能提供任何帮助。
答案 0 :(得分:3)
你必须做出一些改变:
改变
scanf ("%s %c %c", &string[i], &c1, &c2);
到
scanf ("%s %c %c", string, &c1, &c2);
和
if (c1 == string[i])
到
if (c1 == string[n])
此外,您可以通过将if (c1 == string[i])
更改为for (n = 0; n < l; n++)
来保持for (i = 0; i < l; i++)
不变
这是修改后的代码段
printf ("Introduza uma string e dois caracteres.\n");
scanf ("%s %c %c", string, &c1, &c2);
l = strlen (string);
contador = 0;
for (n = 0; n < l; n++)
{
if (c1 == string[n])
{
contador = contador + 1;
}
}
答案 1 :(得分:1)
这是一个功能的简单实现,可以满足你的需要。
int strnchr(char *string, char ch) {
int i, len = strlen(string), found = 0;
for(i = 0; i < len; i++)
if(string[i] == ch)
found++;
return found;
}
答案 2 :(得分:0)
以下是修改过的代码,“为什么”是haccks的answer。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main ()
{
char string[10];
char c1;
int contador, l, n;
printf ("Introduza uma string e dois caracteres.\n");
scanf ("%s %c", string, &c1);
l = strlen (string);
contador = 0;
for (n = 0; n < l; n++)
{
if (c1 == string[n])
contador++;
}
printf ("%d\n", contador);
return 0;
}
答案 3 :(得分:0)
如果您需要快速实现此功能,可以使用标准c库中的strchr
- 函数,该函数应在大多数常见系统上进行优化。
int strnchr(char *str, char ch) {
int i;
for (i = 0; (str = strchr(str, ch)) != NULL; i++) {
if (++str == '\0') {
break;
}
}
return i;
}