【问题标题】:How to read a text file upto certain position in C?如何在C中读取文本文件到某个位置?
【发布时间】:2010-11-18 03:52:57
【问题描述】:

我将一个字符串作为参数传递给我的程序并提取它在文本文件中的位置。 我们可以在 C 中只读取一个文本文件到这个特定位置吗?如果是,请告诉我怎么做。

【问题讨论】:

  • 您的问题并不完全清楚-如果您可以发布当前程序的一些源代码可能会更容易。另外,“特定位置”是什么意思 - 特定数量的字符,或者在找到给定字符之后?
  • 是的...我的意思是直到字符串在文件中存在的位置。

标签: c file text io


【解决方案1】:

只需使用 fread() 最多可将您置于文件中的“位置”的字节数。例如,如果您知道要读取 1928 字节的位置,只需使用 fread 读取那么多字节即可。

【讨论】:

  • 感谢您的回答......但是有没有办法从一个文件读取并直接写入另一个文件而不读取缓冲区??
  • 没有。您总是必须通过缓冲区工作。不过,它可以是一个非常小的缓冲区 - 只需读取少量字节,然后循环将其写入另一个文件。
【解决方案2】:

您需要的是为文件句柄编写的 strstr 函数。这是 strstr 的通用实现。你可以很容易地修改它以使用文件缓冲区而不是另一个字符串,所以我不会为你做你的工作:P

char *
strstr(const char *haystack, const char *needle)
{
        char c, sc;
        size_t len;

        if ((c = *needle++) != '\0') {
                len = strlen(needle);
                do {
                        do {
                                if ((sc = *haystack++) == '\0')
                                        return (NULL);
                        } while (sc != c);
                } while (strncmp(haystack, needle, len) != 0);
                haystack--;
    }
        return ((char *)haystack);
}

【讨论】:

  • 只是为了稍微惯用一点:-分别使用参数名称'haystack'和'needle'-使用空字符而不是0常量((c = *find++)!='\ 0')
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-12
  • 1970-01-01
  • 2014-09-26
  • 2013-04-17
  • 1970-01-01
相关资源
最近更新 更多