有没有办法将文本文件的内容存储在 c 中的交错字符串数组中?

Is there a way to store the contents of a text file in a jagged string array in c?

提问人:Aneesh Bhave 提问时间:4/11/2022 更新时间:4/11/2022 访问量:39

问:

让我们从一个example.txt文件开始,其内容是 -

ABCDEF
ABCDE
ABCD
ABCDEFGH
ABC
A
AB

数组应如下所示 -

arr = ["ABCDEF", "ABCDE", "ABCD", "ABCDEFGH", "ABC", "A", "AB"]

我需要一种方法将行存储在类似于 c 中交错字符数组中的example.txt文件中。是否有功能可以解决这个问题,或者我是否需要手动实现它。如果我必须手动实现它,那么在定义阵列时,如何在内存上为阵列分配足够的空间?

数组 C 文本 文件- IO

评论

5赞 Some programmer dude 4/11/2022
一般来说,任何形式的问题“是否有可能......”可以用“是”回答。就您的情况而言,您对文件输入以及如何阅读行了解多少?您对回合指针以及动态内存分配和重新分配了解多少?你对C语言中的锯齿数组做了什么样的研究,以及如何实现它们?
1赞 Some programmer dude 4/11/2022
是的,这是可能的,而且并不少见。我建议你投资一两本初学者 C 书,因为你需要学习的所有科目都应该在那里涵盖(指针、、、等)。fgetsmallocrealloc
1赞 Aneesh Bhave 4/11/2022
@Someprogrammerdude我爸爸可能有一本 K&R 书,我想这对我的用例来说应该绰绰有余了?
3赞 Gerhardh 4/11/2022
那本 K&R 的书可能同时被认为是“C 圣经”和“可怕的过时”。;)如果您遇到隐式函数声明或使用 ,请捂住眼睛!gets
1赞 the busybee 4/11/2022
不要试图用 K&R 学习 C。它的拨号器已经过时了,您可以将其与烟雾信号进行比较进行通信。有大量基于网络的机会,主要问题是过滤掉废话。请参阅标签“C”上的信息,它包括提示。

答:

0赞 Lundin 4/11/2022 #1

伪代码:

  • 打开文件并验证是否成功。fopen
  • 分配指针数组,其中某个合适的值(100 个指针?char** array = malloc(n * sizeof(*array));n
  • 使用某些变量跟踪指针数组中使用的大小。size
  • 开始循环。
  • 将字符串读入 128 或 256 等字符的“足够大”本地缓冲区,使用或类似。始终检查输入函数的结果,看看它是否成功。fgets
  • 如果<则访问并使其指向一个块,则本地缓冲区数据进入该块。sizenarray[size]malloc(strlen(the_local_buffer))strcpy
  • 如果那么 realloc .size == narray
  • size++和循环。