修改字符数组却修改不了的问题

taiyia2009 2010-10-06 09:17:35
我写了一个函数,是把一个位数小于等于3的数字k转换成字符串,位数不够3时在前面补0,从“000”的末位开始修改,依次向前,可是程序好像运行到str1[j]=str2[i];这里就运行不下去了,不知道为什么,请问谁知道的可以告诉我吗?
void get_str(int k, char str1[]){
str1="000"; //赋值
cout<<str1;
char str2[4];
itoa(k,str2,10);
int j=2;
for(int i=strlen(str2)-1;i>=0;i--){
cout<<i;
cout<<str2[i];
cout<<str1[j];
str1[j]=str2[i]; //这步好像不可以运行,因为下面的输出都没有了,上面的输出就有
j--;
cout<<j;
}
cout<<j;
cout<<"********************"<<str1[j+2]<<endl;


}
...全文
93 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
taiyia2009 2010-10-06
  • 打赏
  • 举报
回复
改了一下,没错了,谢谢各位。我只是避开不用先赋值再修改的方法。不过我还想知道我在3楼提的那个问题的答案?
void get_str(int k, char str1[]){
cout<<"get——str";
//str1="000"; //赋值
//cout<<str1;
char str2[4];
itoa(k,str2,10);
int j=2;
str1[3]='\0';
for(int i=strlen(str2)-1;i>=0;i--){//
cout<<i;
cout<<str2[i];
//cout<<str1[j];
str1[j--]=str2[i];

cout<<j;
}

while(j>-1){
str1[j--]='0';
}
cout<<j;
cout<<"********************"<<str1<<endl;


}
taiyia2009 2010-10-06
  • 打赏
  • 举报
回复
哦,你知道为什么str1="000";相当于 const char *str1="000"; 吗?
是不是早有规定的?我记得学汇编语言时,好像可以这样改,是不是用C++就不可以了?
mskmc_mc 2010-10-06
  • 打赏
  • 举报
回复
好好观察数组是否溢出,
void get_str(int k, char str1[])
函数参数什么时候是数组了?这里用指针
把char str1[] 改为 char * str1比较好点,其它错误地址按步骤调试即可
Csuxiaowu 2010-10-06
  • 打赏
  • 举报
回复
str1="000"; //赋值
这里相当于 const char *str1="000";了
所以你后面对他赋值就不行

64,644

社区成员

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

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