1、封装函数,用指针实现字符串连接
#include <stdio.h>
#include <string.h>
void MyStrcat(char *dest,char *src)
{
int i;
for(i=0;*(dest+i);i++);
for(int j=0;*(src+j);j++)
*(dest+i++)=*(src+j);
*(dest+i)=0;
}
int main(int argc, const char *argv[])
{
char dest[20]="1234";
char src[]="6798";
MyStrcat(dest,src);
puts(dest);
return 0;
}
【输出样例】
12346798
2、下面的代码有什么错误?
void test()
{
char string[10];
char *str1="0123456789";
strcpy(string,str1);
}
//字符串"0123456789"的字符长度为11,字符数组string[]的字符长度为10,将str1拷贝到string中会导致数组越界
3、请问下面的代码有什么问题?
int main()
{
char a;
char *str=&a;
strcpy(str,"hello")
printf(str)
return 0;
}
//代码存在两处错误,第一处错误:调用strcpy与printf函数后未使用分号结尾,第二处错误:定义的a为单字符,指针str指向a的地址,无法将字符串常量"hello"拷贝给str
4、有什么错?
char* s="AAA";
printf("%s",s);
s[0]='B';
printf("%s",s);
//指针指向字符串常量"AAA"在.ro,只能读取不能修改,s[0]='B'对字符串常量进行了修改,会报错
5、下面是一段计算0……100累加和的代码,请指出这段代码中的错误。
int main()
{
int *MyData;
int Count=100;
int Sum,i;
for(i=0;i<Count;i++){
*MyData++=i;
}
for(i=0;i<Count;i++){
Sum+=*MyData;
MyData++;
}
return Sum;
}
//代码存在两处错误,第一处错误:i<Count,使得i=100无法进去循环,不能满足题意,第二次错误:int *MyData定义了一个野指针,会造成计算机混乱,本意应该是定义一个一维数组,指针MyData指向一维数组的地址