C语言数组

记录一个问题。
在写c语言读csv文件的时候,由于csv文件为 80w*5, 每个元素是字符串,因此想用一个二维字符串数组存一下,可一查才知道,c语言没有二维字符串数字,因此,准备用5个字符串数组代替,每个字符串数组存储1列。

char dataset_wr[800000][MAX_LINE_SIZE] ;
char dataset_pid[800000][MAX_LINE_SIZE] ;
char dataset_io[800000][MAX_LINE_SIZE] ;
char dataset_path[800000][MAX_LINE_SIZE] ;
char dataset_tr[800000][MAX_LINE_SIZE] ;

一开始觉得没啥,也没超过数组100w的限制,最重要第一次跑通了,数据也读出来了,但是恶梦也开始了。

第二次再跑的时候,一直提示我 不是win32程序,上网查了很多解决办法,未果。
起初以为是dev的编译器问题,后来重装,不行;换一个codeblock,不行;没辙,vs2015吧,不行。。。

最主要 “不是win32”程序很难让我想到是我代码本身的问题,何况我第一遍跑通了呢。
没辙,只能仔细看下代码,发现唯一可能产生问题的地方就是数组了,于是乎用动态申请代替

    dataset_wr = NULL;
    dataset_wr = (char**)malloc(sizeof(char*)*inumdata); //行数   //每行多大  512
    for( m=0; m<inumdata; m++ ){
         dataset_wr[m] = (char*)malloc( sizeof(char) * MAX_LINE_SIZE );
    }
    
    dataset_pid = NULL;
    dataset_pid = (char**)malloc(sizeof(char*)*inumdata); 
    for( m=0; m<inumdata; m++ ){
         dataset_pid[m] = (char*)malloc( sizeof(char) * MAX_LINE_SIZE );
    }
    
    dataset_io = NULL;
    dataset_io = (char**)malloc(sizeof(char*)*inumdata); 
    for( m=0; m<inumdata; m++ ){
         dataset_io[m] = (char*)malloc( sizeof(char) * MAX_LINE_SIZE );
    }
    
    dataset_path = NULL;
    dataset_path = (char**)malloc(sizeof(char*)*inumdata); 
    for( m=0; m<inumdata; m++ ){
         dataset_path[m] = (char*)malloc( sizeof(char) * MAX_LINE_SIZE );
    }

    dataset_tr = NULL;
    dataset_tr = (char**)malloc(sizeof(char*)*inumdata); 
    for( m=0; m<inumdata; m++ ){
         dataset_tr[m] = (char*)malloc( sizeof(char) * MAX_LINE_SIZE );
    }

然后,就不提示 “不是win32”程序了。。。。但总算程序能正常用了。
心累的一晚。

建议:以后这种大的数组,建议还是动态申请的方式比较好。不要用直接规定大小的那种了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值