请教各位,关于char 类型的数组的最大长度

maomao201101 2013-12-04 10:52:43
程序中进行如下声明时
#define C=27
char buf[C*6+C+4]; //C*6+C+4=192
buf[C*6+C+3]='\0';

程序出现错误,进行断点调试时buf的数组空间只被赋予了186个,而我想要的是192个啊

请问这是不是char类型有最大长度的原因啊?若果不是的话又是什么原因呢?怎么解决?

ps:当C=26时就可以正确生成,C*6+C+4=185
...全文
737 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
encoderlee 2013-12-04
  • 打赏
  • 举报
回复
不清楚,我这里没问题
Roton_ 2013-12-04
  • 打赏
  • 举报
回复
// SYSTEMTIME st; // GetLocalTime(&st); // CString tmp; // tmp.Format("%d", st.wMilliseconds); srand(time(0)); 只不过前面改了点
Roton_ 2013-12-04
  • 打赏
  • 举报
回复
我用你的代码试了下是没问题的哦,跟数组的最大长度没关系
版主大哥 2013-12-04
  • 打赏
  • 举报
回复
用const int C = 26; 代替 #define C 26 看着就不想调了 呵呵 有点烦躁...
baichi4141 2013-12-04
  • 打赏
  • 举报
回复
在哪里出的问题?
版主大哥 2013-12-04
  • 打赏
  • 举报
回复
char数组哪有什么最大长度 char szBuf[10000] 都行,只要不超过开发环境设置的栈最大大小就行 你把你代码贴出来 大家看看
maomao201101 2013-12-04
  • 打赏
  • 举报
回复
引用 3 楼 baichi4141 的回复:
把源代码贴出来
#define C 27 struct population //定义染色体结构 { string str; string sub1,sub2,sub3; int X[10][10][10],V[10],Y[10]; long max1,max2,max3,fitness,sumfitness; }; population pop[popSize];//定义染色体结构数目 void CFRP_1008View::newpop(population *t)//产生长度为C*6+C+3的初始字符串 { SYSTEMTIME st; GetLocalTime(&st); CString tmp; tmp.Format("%d", st.wMilliseconds); srand(st.wMilliseconds); const int cnt = C;// int index[cnt]; int range = 6; for (int i1 = 0; i1 < cnt; ++i1) { index[i1] = rand() % range; } char buf[C*6+C+4];// buf[C*6+C+3]='\0'; //4*6 for (int i = 0; i < C; ++i) { for (int j = 0; j < 6; ++j) { if (j == index[i]) { buf[i * 6 + j] = '1'; } else { buf[i * 6 + j] = '0'; } } } //6 for(int j = C*6; j < C*6+C+3; ++j) { buf[j] = rand() % 2 + 48; } t->str = buf; }
baichi4141 2013-12-04
  • 打赏
  • 举报
回复
把源代码贴出来
maomao201101 2013-12-04
  • 打赏
  • 举报
回复
引用 1 楼 jzycode 的回复:
这位老兄,你知道的话点拨一下小弟拜
_船长_ 2013-12-04
  • 打赏
  • 举报
回复

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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