C 在指针数组中搜索以计数字母使用情况

C 在指针数组中搜索以计数字母使用情况,c,pointers,C,Pointers,好的,所以我不是在寻找一个完整的答案。我只是不知道从哪里开始。我有一个代码,它声明了一个满是名称的指针数组。目标是编写一个代码来搜索姓名,并计算所使用的每个字母 /* * Search through each character in s, * whic

好的,所以我不是在寻找一个完整的答案。我只是不知道从哪里开始。我有一个代码,它声明了一个满是名称的指针数组。目标是编写一个代码来搜索姓名,并计算所使用的每个字母

/*                                                                              
 * Search through each character in s,                                          
 * which is array containing n strings,                                         
 * and update the global count array                                            
 * with the correct character counts.                                           
 * Note: check the examples to see                                              
 * if the counts should be case                                                 
 * sensitive or case insensitive.                                               
 */
void letterCount(char * s[], int n){
  //Implement this function                                                     
  int c = 0,x;                      // This is what I've done and I 
  char p = 'a', j = 'z';            // don't know where im messing up.
  while (s[c] != '\0') {            // I know I can't compare pointer
    if (s[c] >= p && s[c] <= j ){   // and integer.
        x = *s[c] - 'a';
          count[x]++;
      }
      c++;
    }
}

/*                                                                              
 * Initialize each value in the global                                          
 * count array to zero.                                                         
 */
void initializeCount(){
  //Implement this function                                                     
  int i;
  for (i = 0; i < 26; i++){      // Also not sure if this is correct.
    count[i] = 0;
  }
}
/*
*搜索s中的每个字符,
*它是包含n个字符串的数组,
*并更新全局计数数组
*具有正确的字符计数。
*注意:检查示例以查看
*如果计数是正确的话
*敏感或不区分大小写。
*/
无效字母计数(字符*s[],整数n){
//实现这个功能
int c=0,x;//这就是我所做的,我
charp='a',j='z';//不知道我把事情搞砸了。
虽然(s[c]!='\0'){//我知道我不能比较指针

如果(s[c]>=p&s[c]
s[c]
不是字符,它是
指针
,您正在比较
指针
和无效的字符
p

if (s[c] >= p && s[c] <= j ) // here you are comparing address & char, which you shouldn't 

如果(s[c]>=p&&s[c]=p&&s[c][i]
s[c]
不是一个字符,它是一个
指针
,您正在比较
指针
和无效的字符
p

if (s[c] >= p && s[c] <= j ) // here you are comparing address & char, which you shouldn't 

if(s[c]>=p&&s[c]=p&&s[c][i]字符串是一个包含1个或多个字符的数组。长度由最后一个字符表示,带有
\0
。这就是为什么至少有1个字符(如果只有
\0
-终止符)。(对我来说,您似乎理解这一点。)您没有考虑的是:
s
不是一个字符串,而是一个字符串数组。因此,必须有一个外部循环,以i=0对
s[i]
进行迭代…
n
-1。您必须将代码应用于每个
s[i]
(这是一个
char*
,指向开头所述的字符串。)“我不知道我在哪里搞砸了”我们也不知道,因为您没有麻烦指定问题是什么。是否有错误?或者它是否工作但给出了错误的结果?字符串是一个包含1个或多个字符的数组。长度由最后一个字符表示,带有
\0
。这就是为什么至少有1个字符(如果只有
\0
-终止符)。(对我来说,你似乎理解这一点。)你没有考虑的是:
s
不是一个字符串,而是一个字符串数组。因此,对于
s[i]
,必须有一个外部循环迭代,i=0…
n
-1。你必须将你的代码应用到每个
s[i]
(这是一个指向开头描述的字符串的
char*
)“我不知道我在哪里搞砸了”我们也不知道,因为您没有麻烦指定问题出在哪里。是否有错误?或者它是否工作但给出了错误的结果?
s[c]!='\0'
在外部条件下看起来仍然是个坏主意,我希望
n
在数组中扮演字符串数的角色。@grek40是的,我没有正确观察。可以将循环旋转到任何字符串“s[c]不是字符,它是字符串”,而不是
s[c]
是一个指针,一个指向
char
的指针,一个
char*
。指针不是数组。
s[c]!='\0'
在外部条件下看起来仍然是个坏主意,而我希望
n
在数组中扮演字符串数量的角色。@grek40是的,我没有正确观察。可以将循环旋转到“s[c]个字符串的数量不是字符,而是字符串”,不是
s[c]
是指针,是指向
char
的指针,是
char*
的指针。指针不是数组。