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? 展开
#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? 展开
4个回答
展开全部
#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赋值
追问
谢谢你,不过我只能采纳一个答案哦。
展开全部
首先,你的str在for循环里声明的,在循环之外是没有str变量的。其次,字符串数组的复制可以用strncpy函数,而不是直接用复制号。
追问
明白了,谢谢你。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C语言,变量定义必须放在程序开始位置。
把char path[]=str;
改成char path[50];//放在前面
strcpy(path, str);
就可以了。
把char path[]=str;
改成char path[50];//放在前面
strcpy(path, str);
就可以了。
追问
非常感谢你的回答。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
为什么拼接完成后的str不能赋值给path
因为C语言中 path。。。没办法直接等于str,需要strcpy,你这不是C++,从头文件声明可以看出~
说什么str是未声明的变量
是因为str是你在for循环里面定义的,它的生命周期只有for循环而已,出了循环就挂了
怎样才能实现将str赋值给path?
把str的声明提到for前面
定义char path[50],C定义时需要知道长度~~
strcpy(path, str);这样就好
因为C语言中 path。。。没办法直接等于str,需要strcpy,你这不是C++,从头文件声明可以看出~
说什么str是未声明的变量
是因为str是你在for循环里面定义的,它的生命周期只有for循环而已,出了循环就挂了
怎样才能实现将str赋值给path?
把str的声明提到for前面
定义char path[50],C定义时需要知道长度~~
strcpy(path, str);这样就好
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询