gpt4 book ai didi

c - 如何将文本复制到C中的字符数组

转载 作者:行者123 更新时间:2023-11-30 20:55:21 24 4
gpt4 key购买 nike

我想将文本从文本文件复制到

如何将文本文件复制到C语言中的字符串?

 FILE *file; 
file = fopen ( filename, "r" );

我将它分配给这样的变量

    // char P[] = "Content from File";

最佳答案

有几种方法可以做到这一点。我个人最喜欢的是像这样使用 fread() :

// Open the file the usual way.
File *file = fopen(filename, "r");
if(!file) exit(1); // Failed to open the file.

// Figure out the length of the file (= number of chars)
fseek(file, 0, SEEK_END);
long int size = ftell(file);
fseek(file, 0, SEEK_SET);

// Create the char-array and read the file-content.
char *P = malloc(size * sizeof(char)) // Allocate enough space.
if(!P) exit(2); // Failed to allocate memory.
fread(P, sizeof(char), size, file); // Read the file content.
<小时/>

以下是其工作原理的说明:

  • fseek(file, 0, SEEK_END) 获取文件流 file,并将流位置设置为文件末尾(由 指示) SEEK_END),没有偏移(因此是 0)。您可以阅读有关此 std-library 函数的更多信息 here .
  • ftell(file) 获取文件流 file 并返回当前流位置(我们之前将其设置为文件末尾,因此这将为我们提供整个文件的长度)。该值作为 long int 返回。您可以阅读更多相关信息here .
  • 现在我们必须将流位置设置回开头,以便稍后可以读取文件。再次使用 fseek() 完成此操作,这次为其提供位置参数 SEEK_SET。这告诉它跳回到文件的开头。
  • 我们现在可以分配文本缓冲区,在您的例子中称为P。 (在 malloc 之后,不要忘记检查是否确实返回了有效的指针!)
  • 终于可以读取文件了! fread() 有四个参数。第一个是我们要写入的缓冲区。这是您的情况下的 P 字符数组。第二个参数 sizeof(char) 告诉 fread() 各个元素的大小。在我们的例子中,我们想要读取字符,因此我们将字符的大小传递给它。第三个参数是我们之前确定的文件长度。最后一个参数是应该读取的文件流。如果您想阅读 fread(),您可以这样做 here .

关于c - 如何将文本复制到C中的字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33976500/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com