请C++高手帮我看一下,为什么这个程序结果会出现乱码。 程序是将一个字符串复制到另一个字符串中。
#include<iostream.h>voidstrcpy(chararray1[],chararray2[]){intsize;inti;size=sizeof(ar...
#include<iostream.h>
void strcpy(char array1[],char array2[])
{
int size;
int i;
size=sizeof(array1)/sizeof(char); //求出数组的字符个数
for(i=0;i<size;i++)
{
array2[i]=array1[i];
}
}
void main()
{
char str1[20]="Congratulations!";
char str2[20];
strcpy(str1,str2);
cout<<"str1:"<<str1<<endl;
cout<<"str2:"<<str2<<endl;
} 展开
void strcpy(char array1[],char array2[])
{
int size;
int i;
size=sizeof(array1)/sizeof(char); //求出数组的字符个数
for(i=0;i<size;i++)
{
array2[i]=array1[i];
}
}
void main()
{
char str1[20]="Congratulations!";
char str2[20];
strcpy(str1,str2);
cout<<"str1:"<<str1<<endl;
cout<<"str2:"<<str2<<endl;
} 展开
7个回答
展开全部
可能是sizeof使用不当引起的,sizeof用于数组好像是有特殊处理的。
#include<iostream.h>
#include<string.h>
void strcpy(char array1[],char array2[])
{
int size;
int i;
// size=sizeof(array1)/sizeof(char); //求出数组的字符个数
size=strlen(array1); //求出数组的字符个数
for(i=0;i<size;i++)
{
array2[i]=array1[i];
}
array2[i] = '\0';
}
void main()
{
char str1[20]="Congratulations!";
char str2[20];
strcpy(str1,str2);
cout<<"str1:"<<str1<<endl;
cout<孝派<悉慎改"str2:"<睁判<str2<<endl;
}
#include<iostream.h>
#include<string.h>
void strcpy(char array1[],char array2[])
{
int size;
int i;
// size=sizeof(array1)/sizeof(char); //求出数组的字符个数
size=strlen(array1); //求出数组的字符个数
for(i=0;i<size;i++)
{
array2[i]=array1[i];
}
array2[i] = '\0';
}
void main()
{
char str1[20]="Congratulations!";
char str2[20];
strcpy(str1,str2);
cout<<"str1:"<<str1<<endl;
cout<孝派<悉慎改"str2:"<睁判<str2<<endl;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-01-30
展开全部
两个问题,已经改好,具体请看注释:
#include<iostream.h>
#include<string.h> //这里!这里!这里!这里!这里!包含这个头文件,后面的strlen库函数用到
void strcpy(char array1[],char array2[])
{
int size;
int i;
//size=sizeof(array1)/sizeof(char); //求出数组的字符个数
size=strlen(array1);//这里!这里!这里!这备轮里!这里!用strlen来求字符串的长度
for(i=0;i<size;i++)
{
array2[i]=array1[i];
}
}
void main()
{
char str1[20]="Congratulations!";
char str2[20]={NULL};//这里!这里!这里!这里!这里!str2需要初始旅滚橘化为空,否则里面有拆团随机数据
strcpy(str1,str2);
cout<<"str1:"<<str1<<endl;
cout<<"str2:"<<str2<<endl;
}
#include<iostream.h>
#include<string.h> //这里!这里!这里!这里!这里!包含这个头文件,后面的strlen库函数用到
void strcpy(char array1[],char array2[])
{
int size;
int i;
//size=sizeof(array1)/sizeof(char); //求出数组的字符个数
size=strlen(array1);//这里!这里!这里!这备轮里!这里!用strlen来求字符串的长度
for(i=0;i<size;i++)
{
array2[i]=array1[i];
}
}
void main()
{
char str1[20]="Congratulations!";
char str2[20]={NULL};//这里!这里!这里!这里!这里!str2需要初始旅滚橘化为空,否则里面有拆团随机数据
strcpy(str1,str2);
cout<<"str1:"<<str1<<endl;
cout<<"str2:"<<str2<<endl;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<iostream.h>
/*数strcpy形参表内所定义的数组不是引用类型,所以无法该函数功能修改实参值。而是修改在自动对象内被初始绝喊化实参的副本*/
//在该函数体内执行的功能在函数每次调用笑升完毕都会被撤销。所以没有实现数组间的复制
void strcpy(char array1[],char array2[])
{
int size;
int i;
size=sizeof(array1)/sizeof(char); //求出数组的字符个数
for(i=0;i<size;i++)
{
array2[i]=array1[i];
}
}
void main()
{
char str1[20]="碰宏老Congratulations!";
char str2[20];
/*综上所述,形参没有修改实参的值,所以数组str2没有被初始化,因此在打印的时候,显示一段乱码*/
strcpy(str1,str2);
cout<<"str1:"<<str1<<endl;
cout<<"str2:"<<str2<<endl;
}
/*数strcpy形参表内所定义的数组不是引用类型,所以无法该函数功能修改实参值。而是修改在自动对象内被初始绝喊化实参的副本*/
//在该函数体内执行的功能在函数每次调用笑升完毕都会被撤销。所以没有实现数组间的复制
void strcpy(char array1[],char array2[])
{
int size;
int i;
size=sizeof(array1)/sizeof(char); //求出数组的字符个数
for(i=0;i<size;i++)
{
array2[i]=array1[i];
}
}
void main()
{
char str1[20]="碰宏老Congratulations!";
char str2[20];
/*综上所述,形参没有修改实参的值,所以数组str2没有被初始化,因此在打印的时候,显示一段乱码*/
strcpy(str1,str2);
cout<<"str1:"<<str1<<endl;
cout<<"str2:"<<str2<<endl;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
sizeof是运算符,其运算对象是类型而不是变量或一般表达式
就本题来说前洞,可以将strcpy改为
void strcpy(char array1[],char array2[])
{
int i;
for(i=0;a[i]!='\0';i++)//此时a数组必须是以袜悔袜'告激\0'结束才行
b[i] = a[i];
}
或者strlen函数
void strcpy(char array1[],char array2[])
{
int size;
int i;
size = strlen(a);
for(i=0;i<size;i++)
b[i] = a[i];
}
建议用指针处理更简单一些,效率也更高,就一条语句就可以实现
void strcpy(char *s,char *d)
{
while(*d++=*s++);
}
就本题来说前洞,可以将strcpy改为
void strcpy(char array1[],char array2[])
{
int i;
for(i=0;a[i]!='\0';i++)//此时a数组必须是以袜悔袜'告激\0'结束才行
b[i] = a[i];
}
或者strlen函数
void strcpy(char array1[],char array2[])
{
int size;
int i;
size = strlen(a);
for(i=0;i<size;i++)
b[i] = a[i];
}
建议用指针处理更简单一些,效率也更高,就一条语句就可以实现
void strcpy(char *s,char *d)
{
while(*d++=*s++);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询