Ⅰ c语言strcpy()用法
1、strcpy函数是复制字符串的,接受两个参数,一个是被复制字符串,另一个新字符串。具体的用法,首先打开编辑器新建一个c语言的程序文件,写入头文件和主函数:
Ⅱ C语言指针
可能是你的LCD_ShowString函数的参数是u8*类型的,而你的JOYPAD_SYMBOL_TBL是const u8*
,所以要做类型匹配。
Ⅲ 如何用c语言实现CString的构造函数,析构函数和赋值函数
类是编程人员表达自定义数据类型的C++机制。它和C语言中的结构类似,C++类
支持数据抽象和面向对象的程序设计,从某种意义上说,也就是数据类型的设
计和实现。
那么
String
类的原型如下
class
String
{
public:
String(const
char
*str=NULL);
//构造函数
String(const
String
&other);
//拷贝构造函数
~String(void);
//析构函数
String&
operator=(const
String
&other);
//等号操作符重载,赋值函数
ShowString();
private:
char
*m_data;
//字符指针
};
String::~String()
{
delete
[]
m_data;
//析构函数,释放地址空间
}
String::String(const
char
*str)
{
if
(str==NULL)//当初始化串不存在的时候,为m_data申请一个空间存放'/0';
{
m_data=new
char[1];
*m_data='/0';
}
else//当初始化串存在的时候,为m_data申请同样大小的空间存放该串;
{
int
length=strlen(str);
m_data=new
char[length+1];
strcpy(m_data,str);
}
}
String::String(const
String
&other)//拷贝构造函数,功能与构造函数类似。
{
int
length=strlen(other.m_data);
m_data=new
[length+1];
strcpy(m_data,other.m_data);
}
String&
String::operator
=(const
String
&other)
//赋值函数
{
if
(this==&other)//当地址相同时,直接返回;
return
*this;
delete
[]
m_data;//当地址不相同时,删除原来申请的空间,重新开始构造;
int
length=sizeof(other.m_data);
m_data=new
[length+1];
strcpy(m_data,other.m_data);
return
*this;
}
String::ShowString()//由于m_data是私有成员,对象只能通过public成员函数来访问;
{
cout<<this->m_data<<endl;
}
测试一下:
main()
{
String
AD;
char
*
p="ABCDE";
String
B(p);
AD.ShowString();
AD=B;
AD.ShowString();
}
Ⅳ c语言编程:字符串拷贝(程序改错)
不知道你这是做的题目还是练习什么的?这题有很大的问题。
1字符串数组大小的问题,然后因为这个导致后面函数strcpy和后面的字写函数都有问题。哪怕代码改的可以正常运行,以后肯定还是会有指针溢出
#include <stdio.h>
#include <string.h>
#define BUF_SIZE 10
#define setString for (i=0;i<BUF_SIZE;i++) string1[i]=i
#define showString printf("[%s]\n",string1)
void strCpy1(char* t,const char *f);
void strCpy2(char* t,const char *f);
void strCpy3(char* t,const char *f);
int main() {
int i;
char string[BUF_SIZE]="123456789";
char string1[BUF_SIZE];
setString;
strcpy(string1,string);
showString;
setString;
strncpy(string1,string,strlen(string)+1);//change (1)
showString;
setString;
strCpy1(string1,string);
showString;
setString;
strCpy2(string1,string);
showString;
setString;
strCpy3(string1,string);
showString;
return 0;
}
void strCpy1(char* t,const char *f) {
for (unsigned i=0;i<strlen(f)+1;i++)//change (2)
t[i]=f[i];
}
void strCpy2(char* t,const char *f) {
while ((*t++=*f++)!='\0');//change3
}
void strCpy3(char* t,const char *f) {
while ((*t++=*f++)!='\0'); //change 4
}
Ⅳ C语言中如何判断是不是合法转义字符
'