【问题标题】:File handling operetions in C [closed]C中的文件处理操作[关闭]
【发布时间】:2011-01-23 05:09:37
【问题描述】:

谁能指点我参考或初学者的 C 文件处理教程。

【问题讨论】:

  • 尝试在搜索引擎中输入“C 中的文件处理”
  • @mitch 我试过搜索。因为我是初学者,所以不知道适合我的书。这就是为什么我在这里发布一个问题:)
  • 初学者没有错;我们都曾经。但能够搜索是先决条件
  • @mitch 相信我可以搜索。 :) 但是当我开始搜索时。我一直从一本书跳到另一本书,最后我什么也没学到。当我从专家那里听到它时,这对我来说是另一回事。在我转向高级的东西之前,我会更专注于那本书并直接了解基础知识:) 这一切都是为了阅读尽可能多的技术:)

标签: c file-io


【解决方案1】:

你用fopen打开一个文件:

FILE *file=fopen("filename", "r"); // opens a file for reading
if(file) {
    // success
}else{
    // error
}

如果您将r 替换为w,那么它将被打开以供写入。如果在模式字符串中包含b,它将以二进制而不是文本形式打开,这是默认设置。 (在文本模式下,它会进行一些转换,例如行尾等)如果您使用r+,它将打开它以供读写。如果您使用w+,它将截断文件并打开它进行读写。您也可以使用a 附加到文件中。

要从文件中读取,请使用freadfgets

char buffer[256];
if(fgets(buffer, sizeof(buffer), file)) { // reads a line from the file
    // success
}else{
    // error
}
if(fread(buffer, sizeof(buffer), 1, file)==1) { // reads 256 bytes from the file
    // success
}else{
    // error
}

要写入文件,请使用fwritefputs

if(fputs("Hello, world!", file)==0) { // writes a line to the file
    // success
}else{
    // error
}
// ---OR---
const char *data="Hello, world!";
if(fwrite(data, sizeof(data), 1, file)==1) { // writes some data to the file
    // success
}else{
    // error
}

完成文件后,使用fclose 关闭它:

if(fclose(file)==0) {
    // success
}else{
    // error
}

【讨论】:

  • 顺便说一句,忽略 fread 和 fwrite 的返回值不是一个好主意。
  • @paxdiablo:是的。
  • 这样更好。 +1 以使其保持独立(在 SO 上)。
  • 嘿,非常感谢代码 :) 它看起来优雅而简单 :)
  • @Jay 我还想指出,在调用 fread() 时,如果文件大小不能被 256 字节整除,您将在上面的代码中收到错误,因为fread() 返回完全读取对象的数量。因此,如果您的文件中有 128 个字节,则上面的示例将返回 0,但不会设置错误,并且 feof(file) 将返回非零。
【解决方案2】:
【解决方案3】:
$ man fopen
$ man fclose
$ man fread
$ man fwrite
$ man fprintf
$ man fscanf
$ man fflush

可能还有所有“另见”部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-19
    • 1970-01-01
    相关资源
    最近更新 更多