【问题标题】:Reading file character-by-character and comparing those characters in C逐个字符读取文件并在 C 中比较这些字符
【发布时间】:2017-04-23 18:55:42
【问题描述】:

我有一个小程序,它逐个字符地读取文本文件并检查文件是否包含某些值。

如果它在另一个字母旁边找到字母 A,我希望文件将第二个字母推到新行并打印结果。例如,如果我有以下文本文件:

阿巴巴阿布

打印出来的结果是:

A
B
A
B
A
A
A
B

我是否需要将当前读取的字符存储在一个名为“prevChar”的变量中,然后将下一个字符记录在一个名为“currentChar”的变量中,然后比较它们并打印结果?为每个角色继续这样做?

【问题讨论】:

  • 是的,继续这样做。
  • 据我了解,您需要根据每对 两个 连续字符来决定是否在输出中插入换行符。因此,您必须一次在内存中维护有关两个字符的信息。但是,您不必记住任何关于在最近两个字符之前读取的字符的信息。按照您描述的方法,一种方法将是实现该方法的自然方法。
  • 你能告诉我这在 C 中会是什么样子吗?我确定这很简单,我似乎无法让它发挥作用。
  • 看看c中的read函数,它可以帮助你找到一个想法

标签: c file char


【解决方案1】:

您可以使用一个bool 变量来执行此操作,例如boolean newLine = false;,初始化为false。这将是让您知道最后一个字符是否为 A 的指示器。

 boolean newLine = false;
    FILE *fp;
    int c;

    fp = fopen("datafile.txt", "w");

    while((c = fgetc(fp)) != EOF) {
        if (newLine) {
            // Here you put char in new line
            if (c == 'A'){
                newLine = true;
            }
            else {
                newLine = false;
            }
        }
    }

    fclose(fp);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    • 2014-11-22
    • 1970-01-01
    • 2019-10-29
    • 1970-01-01
    • 2013-10-14
    相关资源
    最近更新 更多