C 计算数组中出现的字符数
很简单,但我有麻烦。我有一个数组中的随机字母序列:C 计算数组中出现的字符数,c,arrays,loops,C,Arrays,Loops,很简单,但我有麻烦。我有一个数组中的随机字母序列: char box[] = "rbpbymgoybrppogrgxombpgpbpbooyogrrm"; 我需要计算某个字母出现的次数(例如字母“r”) 以下是我目前的计划: main() { int count = 0; for(int i = 0; i < sizeof(box); i++) { if(box[i] == '\r') count++; } printf("Red: %
char box[] = "rbpbymgoybrppogrgxombpgpbpbooyogrrm";
我需要计算某个字母出现的次数(例如字母“r”)
以下是我目前的计划:
main() {
int count = 0;
for(int i = 0; i < sizeof(box); i++) {
if(box[i] == '\r') count++;
}
printf("Red: %d", count);
}
main(){
整数计数=0;
对于(int i=0;i
现在我已经有一种预感,使用“\r”尝试识别角色是不起作用的。是否有其他方法来表示字符并在数组中检查它们?我是否使用它们的ASCII等价物?
“\r”
将意味着。只需使用'r'
:
if(box[i] == 'r')
下面的代码将给出输入字符串中每个字母类型的计数 只在第二个“for”循环中有选择地打印感兴趣的字母应该很容易
#include <stdio.h>
#define MAX_CHAR_TYPES (256)
static char box[] = "rbpbymgoybrppogrgxombpgpbpbooyogrrm";
static unsigned int charCounts[ MAX_CHAR_TYPES ]= {0};
int main( void )
{
for(size_t i = 0; i < (sizeof(box)-1); i++)
{
charCounts[ (int)box[i] ]++;
}
for(int i=0; i < MAX_CHAR_TYPES; i++)
{
if( 0 < charCounts[i] )
{
printf("There were %d of the %c character\n", charCounts[i], (unsigned int)i);
}
}
return 0;
} // end function: main
#包括
#定义最大字符类型(256)
静态字符框[]=“RBPBYMGOYBPOPOGGRGXOMBPPBPBOYOGRRM”;
静态无符号整数字符计数[最大字符类型]={0};
内部主(空)
{
对于(尺寸i=0;i<(尺寸(框)-1);i++)
{
字符计数[(int)框[i]]++;
}
对于(int i=0;i 在R编程语言中,这就是我们得到的
>arr="aaaaafdgshghsghgshfsgfsaaadahsgdhsgdhaaaggghahgahgahghaghhhha"
>arr
#[1] "aaaaafdgshghsghgshfsgfsaaadahsgdhsgdhaaaggghahgahgahghaghhhha"
> aa=strsplit(arr,"")
> aa
#[[1]]
# [1] "a" "a" "a" "a" "a" "f" "d" "g" "s" "h" "g" "h" "s" "g" "h" "g" "s" "h" "f" "s" "g" "f" "s" "a" "a" "a" "d" "a" "h" "s"
#[31] "g" "d" "h" "s" "g" "d" "h" "a" "a" "a" "g" "g" "g" "h" "a" "h" "g" "a" "h" "g" "a" "h" "g" "h" "a" "g" "h" "h" "h" "h"
#[61] "a"
>table(aa[[1]])
# a d f g h s
# 17 4 3 14 16 7
我明白了…我还没有提到这个术语…我通常用反斜杠来识别数组中的整数,但我不知道字符的识别方式不同。为什么要用反斜杠来识别数组中的整数?我不确定…我只是假设它就是这样工作的哈哈。我猜它对整数的作用是一样的?我可以只使用“34”而不是“\34”?这里有点混乱:“\34”
是单个字符,即ASCII值为28(八进制中的34)的控制字符,也称为FS(字段分隔符)或控制下划线<由于历史原因,编译器接受代码>'34'
,但没有定义语义'3'
是字符3,'4'
是字符4。sizeof(box)
不是您所期望的。使用strlen(box)
获取存储在数组中的字符串长度,而不是数组中条目的总数。如果您看不到差异,请阅读C字符串以及它们与char
数组(和char*
)的关系。首先,此代码不会编译,因为main()总是返回一个“int”。因为调用printf()需要这样的语句:#include
还没有在类中涉及到#include,但是在阅读了它之后,strlen函数听起来更合适。另外,我确实包括了#include,我只是没有提到'\r'
是回车字符'r'
是字母r.字符计数[(无符号字符)框[i]]++如果字符串中的字符为负值,则code>将更为谨慎。应使用UCHAR_MAX+1
,而不是256
。