1、指出下面代码有什么问题?
void test(char *str1)
{
if(str1==NULL)
{
return;
}
char string[10];
if(strlen(str1)<=10)
{
strcpy(string,str1);
}
}
解:strlen(str1)<=10应该改成strlen(str1)<10,因为strlen在计算字符串长度是不包括'\0'所占的一个字节。
2、分析下面代码有什么问题?
void test()
{
char string[10],str1[10];
int i;
for(i=0;i<10;i++)
{
str1='a';
}
strcpy(string,str1);
}
解:(1)数组名str1是一个int *const类型,不能对他就行赋值,如果要对数组中某个元素赋值要用*str
(2)对字符串进行赋值以后,使用库函数strcpy进行字符串拷贝操作时,strcpy会从源地址一直向后拷贝,直到遇到'\0'字符。所以要给字符串赋结束标志。
改为:
void test()
{
char string[10],str1[10];
int i;
for(i=0;i<9;i++)
{
str1[i]='a';
}
str1[9]='\0'
strcpy(string,str1);
}
3、