计算字母在字符串中显示的次数 - >部件

时间:2013-04-15 16:14:56

标签: c assembly

想象一下,我在C中有一个程序给了我一个字符串。 例如,“stackoverflow rocks”。

现在我想在Assembly中创建一个函数,例如,字母“o”出现在我的字符串中的次数。

此功能将在C程序中调用。

我正在考虑在C中创建一个程序,这个程序会让我这个,然后通过标志-s将它转换为Assembly。

[编辑] 好的,我这样做了:

#include<stdio.h>

int FindChar(char *ptr, char toFind);

int FindChar(char *ptr, char toFind){

    int num;

    for (int i=1; ptr[i]=0; i++)
        if (ptr[i] = toFind){
            num++;
        }

    return(num);
}

int main ( ) {

    char str[]=”stackoverflow rocks”; 
    char tf=”o”; 
    printf(“It appears %d times \n”, FindChar(str,tf));
}

我的功能出了什么问题?

1 个答案:

答案 0 :(得分:1)

我认为您的备用双引号字符会导致错误,而且char tf的初始化应该使用单引号,而不是双引号,因为它是char而不是字符串。

正如harold前面指出的那样,=必须是==,因此它可以作为比较正常运作。

您也不需要额外的i变量,只需前进指针即可。 既然你不想要汇编代码,它应该缩短一点,技术上也要更高效。

此代码修复了错误,也应该在功能上合理:

#include<stdio.h>

int FindChar(char *ptr, char toFind);

int FindChar(char *ptr, char toFind){
  int num = 0;
  for ( ; *ptr != '\0'; ++ptr)
    {
      if (*ptr == toFind){
        ++num;
      }
    }
  return(num);
}

int main ( ) {
  char str[]="stackoverflow rocks";
  char tf='o';
  printf("It appears %d times \n", FindChar(str,tf));
}