有关strcpy赋值出现的问题

char*args[80];string history[10][10];

.......

i=0;

while(history[counter-1][i]!="")

{strcpy(args[i],history[counter-1][i].c_str());i++;}

cout<<args[0]<<endl;

   当args[1]完成赋值后,打印args[0]值发现其也包含了args[1]的内容,这是为什么,我是在ubuntu上运行的。

首先你看看arg申请的内存是不是足够放的下history,如果arg【0】最后一位不是'\0',会认为字符串没有结束,就会一直打印下去

如果字符串长度=10,那么最多只能拷贝9个字符,否则会导致越界,那么\0被吃掉了,字符串不能正确截止