我可以在字符串中存储NULL吗?

时间:2015-06-22 15:51:56

标签: c string

我想对一个大文件执行一些冗长的操作,这将涉及大量的搜索。 (该程序的当前版本需要5个小时,并且使用fseek至少1505​​7,456次。)因此,我希望将文件加载到ram中,并使用char*而不是FILE*。如果我:

,是否可以将文件中的空字符加载到char*数组中
  1. malloc char数组,并分别存储其长度,
  2. 仅对数组使用字符操作(即newchar = *(pointertothearray+offset)),避免strcpystrstr等操作?

2 个答案:

答案 0 :(得分:6)

您可以将整个文件加载到动态char数组(堆上的malloc)中,即使其中包含空字符:空字符 有效{{1} }。

但你不能称之为字符串 C字符串来自语言规范的空终止字符数组。

因此,只要您只使用偏移量,char函数和无mem...函数,char数组中的空字符就没有问题。

答案 1 :(得分:0)

您可以将整个文件的内容加载到内存中。本质上,这个缓冲区将是一个字节流,而不是一个字符串。