C、读取文件并分割

标签 c split fopen

我有一个输入文件(txt),其中只有两行,由 \n 分隔。 .

例如:

FOO
BAR

现在我必须将第一行(在我的示例 FOO 中)放在 char **a 中和 char **b 中的第二行 (BAR) .

我不知道如何进行这项工作;你能解释一下吗?

最佳答案

如果要使用动态分配,则必须使用 char 指针分配 char vector (char *,而不是 char **):

#define MAX_CHAR 100
char *buffer = (char*) malloc (MAX_CHAR * sizeof(char));

然后你可以使用 fgets从流中读取字符并将它们作为 C 字符串存储到缓冲区中的函数:

FILE * pFile;
pFile = fopen ("myfile.txt" , "r");
if (pFile == NULL) 
   perror ("Error opening file");
else {
  if(fgets (buffer, MAX_CHAR, pFile) != NULL)
    puts (buffer);
}

fclose (pFile);

通过这种方式,您将第一行存储到缓冲区中,使用两次 fgets 将第一行和第二行保存在您想要的位置,您也可以使用非动态 vector 。

不要忘记:

free(buffer);

在我看来,你不需要 char**,因为 char *buffer 中包含所有文本,你可以使用 strtok拆分它。

关于C、读取文件并分割,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10174255/

相关文章:

c - 为什么我的 fputc/fwrite 一直以十六进制打印以及如何打印到文件的中间?

在 Windows 核心文件上调用 fopen 返回 NULL 指针

C 内存分配(malloc)

c - 使用 typedef 与不使用 typedef 实现节点

c - 为什么 root 的值在 main 函数中打印为 0?

c - 如何使用指针显示数组中的字符串?

python - 将 pandas.DataFrame 列的字符串值拆分为数组

Java:强制组件填满 GridLayout 中的整行

c - fclose() 导致段错误

java - 恢复 Java 中 string.split() 分割的字符串