在C编程中存储1,000,000个字符串的替代方法

时间:2016-04-29 04:26:30

标签: c arrays

我在C中创建了一个模拟键的自动typer bot。

首先根据用户输入搜索段落,然后模拟该段落的每个字符。

我有3000段数据库,字符总数超过1,000,000。

那么,请告诉我,我可以将所有数据存储在一个字符数组中吗?

我的代码是---

char database[] = {"A string with more than 1,000,000 characters"};
char *start_position;
gets(s); // a small string given by user, this input is used to search which paragraph user want to simulate.
start_postion=strstr(database, s);
function_for_key_simulation();......

我已经引用here大数组导致缓冲区过载。 请建议我执行此任务的其他方法。

1 个答案:

答案 0 :(得分:4)

对于像char *s = "abcd";这样的字符串文字,标准要求编译器应支持至少4095个字符的限制,如cstd 5.2.4.1中所定义:

  

实现应能够翻译和执行至少一个包含以下每个限制的至少一个实例的程序:

     

- 字符串文字中的4095个字符(连接后)

这意味着您可以安全地定义4095个字符的字符串文字。使更多的字符更容易使代码不可移植。由于某些编译器可能支持更多而某些编译器不支持。

对于char数组,如char array[N];,它取决于实现和平台,通常不建议制作大型数组,如果需要一个大缓冲区来保存数据,请使用动态分配的内存,它会在失败时给你准确的反馈(返回NULL),而不是其他意外行为的运行时缓冲区溢出。