【发布时间】:2013-02-06 01:26:33
【问题描述】:
我已经尝试了递归和迭代方法,但我一直遇到存储不确定长度的字符串的问题。如果它们是某种库或 Api 调用,它会一直读取到下一个空格,这将证明非常有帮助。
但本质上,我需要创建一个包含字符数组的结构数组。
【问题讨论】:
-
C++ 流更智能(或愚蠢,取决于你的尝试)。在 C 语言中,您需要使用 get(或 fgets)或 getc(或 fgetc)。你到底在挣扎什么?你能为我们提供你的问题的代码吗?
-
考虑标准 C 中的
malloc()和realloc(),或 POSIX 中的getline()或getdelim(),或 POSIX 中的stat()和mmap()。或者使用getc()和亲戚,以及malloc()等。换句话说,有很多方法可以做到这一点。 -
我可能不够清楚。我将原始文本存储到字符数组中。但是我不知道在达到分米之前我会读入多少个字符。我相信我必须使用标准 C。我对如何使用 malloc() 感到有点困惑,因为我还没有确定大小的东西。我想我无法编写自己的动态数组之类的行为,但我认为这超出了我应该做的范围。
-
是的,您需要为此使用
malloc。malloc需要您要分配的 RAM 大小,它返回void *。您可以将其转换为您想要的任何数据类型:char *my_array = (char *)malloc( 10 );该示例在堆上分配 10 个字节(字符)。您可以分配固定数量的 RAM,读取直到它已满,然后分配一个更大的数组。然后将旧数组复制到新数组并释放旧缓冲区。您可以重复此操作,直到获得所需的大小。你需要一个更清楚的例子吗?
标签: c arrays file io character