代码之家  ›  专栏  ›  技术社区  ›  Kanishk Tanwar

用于查找文本文件大小的小片段

  •  -1
  • Kanishk Tanwar  · 技术社区  · 7 年前
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    int main()
    {
    FILE *fp;
    char s[80];
    int len=0;
    
    
    fp=fopen("pink.txt","r");
    
    
    while(fgets(s,79,fp)!=NULL)
    
    len=len+strlen(s);   /* length of each string */
           /* spaces and newlines are also counted */
    
    fclose(fp);
    
    printf("length of file = %d",len);
    
        return 0;
    }
    

    我处理了这个片段,它计算字符串并将其添加到变量len中, 最终用作文本大小,因为字符占用一个字节, 但当我点击记事本的属性时,它给出了完全错误的答案。记事本上有15个字节,而记事本上有18个字节,如果我去掉每一行和空格,我的代码和记事本都会给出准确的答案,所以我知道这是因为新行的缘故,有人能解释一下错在哪里吗。

    下面是文本文件中的内容。

    qwe
    ert
    asd
    zxc
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Fifi    7 年前

    检查文件中新行的编码方式。根据您的系统,新行可以在字符串中的两个字符上编码:

    • 回车(\r或CR)
    • 换行符(\n或LF)
    • 二者都 回车+换行(\r\n或CRLF)

    检查 Wikipedia page 有关更多详细信息