c++字符串拼接问题,麻烦各位了。

#include<stdio.h>#include<stdlib.h>#include<string.h>voidmain(){charstr0[10];charstr1... #include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main()
{
char str0[10];
char str1[]="F:\\",str2[]="\\",str3[]=".bmp";
for (int z=1;z<6;z++)
{
char str[50]={0};
itoa(z,str0,10);
strcat(str,str1);
strcat(str,str2);
strcat(str,str0);
strcat(str,str3);
printf("str=%s\n",str);
}
char path[]=str;
}
提示最后一句指令错误,为什么拼接完成后的str不能赋值给path,说什么str是未声明的变量,怎样才能实现将str赋值给path?
展开
 我来答
百度网友83cdc1c
2013-06-07 · TA获得超过5792个赞
知道大有可为答主
回答量:1907
采纳率:100%
帮助的人:846万
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main()
{
 char str[50]={0};
  char str0[10];
 char str1[]="F:\\",str2[]="\\",str3[]=".bmp";
 int z;
 for (z=1;z<6;z++)
 {
  itoa(z,str0,10);
  strcat(str,str1);
  strcat(str,str2);
  strcat(str,str0);
  strcat(str,str3);
  printf("str=%s\n",str);
 }
     char path[50];
     strcpy(path,str);
}

char str[50]定义在for循环的循环体代码段内,其有效范围只在这个循环体内有效,出了这个循环体就失效了。

所以要把这个定义放到main的最前面去。

另外,最后的path如果定义成数组,就要用字符串拷贝的方式对path赋值

追问
谢谢你,不过我只能采纳一个答案哦。
superboytony
2013-06-07 · 超过10用户采纳过TA的回答
知道答主
回答量:38
采纳率:0%
帮助的人:32万
展开全部
首先,你的str在for循环里声明的,在循环之外是没有str变量的。其次,字符串数组的复制可以用strncpy函数,而不是直接用复制号。
追问
明白了,谢谢你。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pardream941026
2013-06-07 · TA获得超过8216个赞
知道大有可为答主
回答量:4602
采纳率:89%
帮助的人:1327万
展开全部
C语言,变量定义必须放在程序开始位置。
把char path[]=str;
改成char path[50];//放在前面
strcpy(path, str);
就可以了。
追问
非常感谢你的回答。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
来安的GM
推荐于2016-08-27 · TA获得超过181个赞
知道小有建树答主
回答量:616
采纳率:0%
帮助的人:271万
展开全部
为什么拼接完成后的str不能赋值给path

因为C语言中 path。。。没办法直接等于str,需要strcpy,你这不是C++,从头文件声明可以看出~

说什么str是未声明的变量

是因为str是你在for循环里面定义的,它的生命周期只有for循环而已,出了循环就挂了

怎样才能实现将str赋值给path?

把str的声明提到for前面
定义char path[50],C定义时需要知道长度~~
strcpy(path, str);这样就好
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式