c-我需要读取文件中的换行符

  • 本文关键字:换行符 文件 读取 file
  • 更新时间 :
  • 英文 :


假设一个文本文件中有hellon stack overflow n,那么输出应该是2,因为有2个n序列。相反,我得到了一个答案。我做错了什么?这是我的代码:

int main()
{
    FILE                *fp = fopen("sample.txt", "r");    /* or use fopen to open a file */
    int                 c;              /* Nb. int (not char) for the EOF */
    unsigned long       newline_count = 1;
        /* count the newline characters */
    while ( (c=fgetc(fp)) != EOF ) {
        if ( c == 'n' )
            newline_count++;
        putchar(c);
    }
    printf("n  %lu newline charactersn ", newline_count);
    return 0;
}

试试这个:

int main()
{
    FILE                *fp = fopen("sample.txt", "r");    /* or use fopen to open a file */
    int                 c, lastchar = 0;              /* Nb. int (not char) for the EOF */
    unsigned long       newline_count = 0;
        /* count the newline characters */
    while ( (c=fgetc(fp)) != EOF ) {
        if ( c == 'n' && lastchar == '\' )
            newline_count++;
        lastchar = c; /* save the current char, to compare to next round */
        putchar(c);
    }
    printf("n  %lu newline charactersn ", newline_count);
    return 0;
}

实际上,文字n是两个字符(一个字符串),而不仅仅是一个。所以你不能简单地把它当作一个角色来比较。

编辑由于n是两个字符,即n,我们必须记住我们读入的最后一个字符,并检查当前字符是否为n,前一个字符是否为。如果两个测试都为真,则意味着我们已经在文件中找到了序列n

相关内容

  • 没有找到相关文章

最新更新