CSV文件 获取每一行长度

yskshift 2014-10-20 09:40:25
由于csv中每一行长度都不同,请问该如何获取每一行的长度; 谢谢!
...全文
482 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2014-10-20
  • 打赏
  • 举报
回复
仅供参考
#include <stdio.h>
#include <string.h>
#define MAXLEN 1000
char ln[MAXLEN];
FILE *f;
int i,z;
int b,n,L;
int main(int argc,char **argv) {
    if (argc<2) {
        printf("Usage:%s fullpathfilename.ext\nget total blank/non-blank/total linenumbers.\n",argv[0]);
        return 1;
    }
    f=fopen(argv[1],"r");
    if (NULL==f) {
        printf("Can not open file [%s]!\n",argv[1]);
        return 2;
    }
    z=0;
    b=0;
    n=0;
    L=0;
    while (1) {
        if (NULL==fgets(ln,MAXLEN,f)) break;
        L=strlen(ln);
        if ('\n'==ln[L-1]) {
            if (0==z) {
                for (i=0;i<L-1;i++) {
                    if (!(' '==ln[i] || '\t'==ln[i])) break;
                }
                if (i<L-1) z=1;//当前行不是空行
            }
            if (0==z) b++; else n++;
            z=0;
        } else {
            if (0==z) {
                for (i=0;i<L;i++) {
                    if (!(' '==ln[i] || '\t'==ln[i])) break;
                }
                if (i<L) z=1;//当前行不是空行
            }
        }
    }
    fclose(f);
    if (L>0 && '\n'!=ln[L-1]) {
        if (0==z) b++; else n++;//最后一行末尾无'\n'也计算
    }
    printf("File:[%s] total blank/non-blank/total linenumbers is %d/%d/%d\n",argv[1],b,n,b+n);
    return 0;
}
dbzhang800 2014-10-20
  • 打赏
  • 举报
回复
没有办法,只能一行一行地数。其实就是一个字符一个字符地读,读到换行符算一行。对文本文件,只能这么干,除非你其他地方存储了外的信息。
赵4老师 2014-10-20
  • 打赏
  • 举报
回复
引用 4 楼 yskshift 的回复:
谢谢,已经解决了,文件比较大,用各位的办法比较慢,最后用了:
char *fileBuffer = new char[uSize];

fread(fileBuffer, 1, uSize, pFile);

map stringMap;

u32 uiIndex = 1;

char *pBegin = fileBuffer;

char *pEnd = strchr(pBegin, '\n');

pBegin = pEnd + 1;

pEnd = strchr(pBegin, '\n');
警告:你这个方法在文件中万一有一行长度超过uSize的时候就不灵了!
yskshift 2014-10-20
  • 打赏
  • 举报
回复
谢谢,已经解决了,文件比较大,用各位的办法比较慢,最后用了:
char *fileBuffer = new char[uSize];

fread(fileBuffer, 1, uSize, pFile);

map stringMap;

u32 uiIndex = 1;

char *pBegin = fileBuffer;

char *pEnd = strchr(pBegin, '\n');

pBegin = pEnd + 1;

pEnd = strchr(pBegin, '\n');
mymtom 2014-10-20
  • 打赏
  • 举报
回复
fgets, 然后 strlen呀

64,318

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧