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

main()
{
  int i;
  int *b, *z;
  char name[30];
  char vowel[5] = {'A', 'E', 'I', 'O', 'U'};
  char consonants[23] = {'B','C','D','F','G','H','J','K','L','M','N','P','Q','R','S','T','V','W','X','Y','Z'};

  printf ("input the string: ");
  scanf  ("%s", name);
  printf ("The string is %s\n", name);

  for (i=0; name[i]!='\0'; i++){
    if
      (b=strchr(vowel, name[i]) != NULL) {
      printf ("The vowels are:  %s\n", b); }
    else if
      (z=strchr(consonants, name[i]) != NULL) {
      printf ("The consonants are:  %s\n", z);
    }
  }
}

我想找出数组中有多少元音和辅音。这是我们老师教给我们的唯一算法,但它不起作用。有人能指点我的错误吗?
我只是又试了一次,听了你的建议,
#include <stdio.h>
#include <string.h>

int main()
{
int vow, cons, i;
char *s, *s1;
char name[30];
char vowel[6] = "AEIOU";
char consonants[21] = "BCDFGHJKLMNPQRSTVWXYZ";

printf ("input the string: ");
scanf  ("%s", name);
printf ("The string is %s\n", name);
for (i=0; name[i]!='\0'; i++)
s = strchr(vowel, name[i]);
printf ("The vowels are:  %s\n", s);

s1 =strchr(consonants, name[i])) {
printf ("The consonants are:  %s\n", s1);
}

return 0;

}

我就是这么改的,听了你的建议,还有什么问题?因为还是不行。
谢谢。
这是我的另一个程序版本
 #include <stdio.h>
 #include <string.h>

 int main()
 {
 int i;
 int counter=0, counter2=0;
 char *s;
 char name[30];
 char vowel[6] = "AEIOU";
 char consonants[21] = "BCDFGHJKLMNPQRSTVWXYZ";

 printf ("input the string: ");
 scanf  ("%s", name);
 printf ("The string is %s\n", name);
 for (i=0; name[i]!='\0'; i++) {
 if (s = strchr(vowel, name[i])) {
 counter++;
 }
 else if (s =strchr(consonants, name[i])) {
 counter2++;
 }
 printf ("First counter is %d\n", counter);
 printf ("The second counter is %d\n", counter2);
 return 0;
 }
  }

我添加了计数器来计算元音和辅音的数量,但仍然不起作用。

最佳答案

strchr()用于在字符串中搜索。

char vowel[] = "AEIOU";
char consonants[] = "BCDFGHJKLMNPQRSTVWXYZ";

关于c - 用C语言在字符串中查找字符的堆栈,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9864558/

10-12 13:26
查看更多