Tag: 查找表

在非常长的字符串中查找频率的最佳方法

我必须找到一种非常优化的方法来查找包含单词的非常长的文件中的字符频率(使用C / C ++时,忽略大小写,应该计算小写和大写)。 我已经知道一个是这个(这里我正在读取终端用户的输入,但在我的情况下我将从文件中读取,所以请不要去get()函数,请关注我的主要目标是获得一个比这更优化的方式(如果可能的话)): int main() { char string[100]; int c = 0, count[26] = {0}; printf(“Enter a string\n”); gets(string); while (string[c] != ‘\0’) { /** Considering characters from ‘a’ to ‘z’ only and ignoring others */ if (string[c] >= ‘a’ && string[c] <= 'z') count[string[c]-'a']++; c++; } for (c = 0; c < […]

我是否应该考虑声明所有C静态函数是一个很好的实践?

我最近写了一段像这样的C代码: static void func1() { } static void func2() { } typedef void (*func_t)(void); const func_t lookUpTable[FUNC_COUNT] = { [FUNC1] = &func1, [FUNC2] = &func2 } 另一个程序员在同一个文件上工作并将其更改为: static void func1(); static void func2(); typedef void (*func_t)(void); const func_t lookUpTable[FUNC_COUNT] = { [FUNC1] = &func1, [FUNC2] = &func2 } static void func1() { } static void […]

在C中执行查找表的最佳方法是什么?

我正在开发一个嵌入式C项目。 我有一个LCD显示屏,每个字符有一个5×7点阵。 要显示特定字符​​,您必须以5个字节移动,这些字节与要打开的点相关联。 所以我需要使用一个键来制作某种查找表,我可以传入一个ASCII字符,并获得一个返回5个字节的数组…例如,调用这个函数就像这样, GetDisplayBytes(‘A’); 应该返回`这样的数组…… C[0] = 0x7E : C[1] = 0x90 : C[2] = 0x90 : C[3] = 0x90 : C[4] = 0x7E 在C中这样做的最佳方法是什么?

生成反向位查找表(8位)背后的算法

我在这里找到了查找表。 该表生成为8位的反向位表。 我无法弄清楚它为何起作用。 请解释它背后的理论。 谢谢 static const unsigned char BitReverseTable256[256] = { # define R2(n) n, n + 2*64, n + 1*64, n + 3*64 # define R4(n) R2(n), R2(n + 2*16), R2(n + 1*16), R2(n + 3*16) # define R6(n) R4(n), R4(n + 2*4 ), R4(n + 1*4 ), R4(n + 3*4 ) R6(0), […]