c语言strcpy将一个结构体的数据复制到另一个后,出问题了
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言strcpy将一个结构体的数据复制到另一个后,出问题了相关的知识,希望对你有一定的参考价值。
我用strcpy将一个结构体的数据复制到另一个结构体,有个疑问是,第一次输入占用空间小的数据程序正常,而第二次输入占用空间大点的数据,程序就出错了,这是怎么回事?难道第一次输入数据后strcpy就将空间确定?下面是部分主要程序:
customer1=(struct cus*)malloc(sizeof(struct cus));
scanf("%s%s%s",customer1->customer_0.name,customer1->customer_0.card,customer1->customer_0.num);
getchar();
system("cls");
head0=air_read();
p0=head0;
while(p0!=NULL)
if(strcmp(p0->num,customer1->customer_0.num)==0)
strcpy(customer1->air_0.name,p0->name);
strcpy(customer1->air_0.num,p0->num);
strcpy(customer1->air_0.fly,p0->fly);
strcpy(customer1->air_0.aim,p0->aim);
strcpy(customer1->air_0.kind,p0->kind);
strcpy(customer1->air_0.time,p0->time);
strcpy(customer1->air_0.food,p0->food);
customer1->air_0.price=p0->price;
break;
p0=p0->next;
我假设你是有一定的C编程基础,所以就只回答你空间描述的不懂的地方了,每句都翻译枯燥而且也会感觉不知所云。还有什么不懂的,欢迎提问,我有足够的耐性和信心让你搞明白,呵呵^!^
C++中主要是比C多了面向对象的概念。
#include <*****> 表示的是将*****头文件包含进来
#include "*****" 功能一样,只是他们索引文件的方式不一样,初学者不必深究。
*****头文件里面定义了常用的一些预处理,结构体,类等等,可以方便大家直接使用不再定义他们。你可以搜索*****找到它打开看看里面的内容,不要随意修改他们哦,否则你以后写程序要出问题的哟,呵呵。
using namespace std;
表示要用到的一些关键字所在的命名空间
因为用到了cout所以必须加上这句话。
定义了一个Student类,定义类的时候除了可以定义一些变量,还可以定义一些接口,变量和接口都可以用private,public,protected来定义访问 以及 继承权限的。
其实接口更直接一点就是一个函数,或者说成指向函数的指针变量也可以,主要看你怎么理解了。
int student::jud() ::表示域限定符,用::定义了一个接口(也就是函数),表示这个函数是属于student类的。
同时student类中还定义了一个student()函数,是构造函数,语法规定必须和类名字相同。构造函数的主要作用是类实例化的时候初始化变量,也就是在创建对象的要用到的。
loop: printf("****");
loop:表示的是一个标号,后面用goto loop 跳转到loop:位置执行printf("****");
你完全可以把loop替换成别的东西,比如xunhuan,呵呵
cout 用来控制输出
<<连接各个参数,
cint 用来控制输入
>>连接各个参数。参数和printf ,scanf 是相一致的。
system("***"); 可以调用一些命令行,如cls 清屏 ,pause 暂停 还可以创建进程等等。
好像差不多没了,其他东西基本都是C语言知识了
PS:
其实C++的类和C语言的结构体非常相似,类可以定义函数接口,但是结构体不行
其实我们在结构体中也可以变相的实现定义函数的嘛,比如定义一个函数指针变量。
唯一不同的就是C++的类多了继承的概念,一个类可以继承另一个类的一些属性
而且在继承的过程中还有private,public,protected等权限。
当然C++除了类之外还有STL等一些比较高级的东东值得学习,巧妙的使用他们可以加快项目进度,提升项目效率,C++真的是很好很强大。 参考技术A strcpy函数是用于字符串复制的,不能用于结构体的复制。
1、C语言标准库函数strcpy,把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间。直观表示为strcpy(狗,赋值内容)实现对文字变量""狗""的赋值,以区别于普通数字的形式赋值。
2、原型声明:extern char *strcpy(char* dest, const char *src);
头文件:#include <string.h> 和 #include <stdio.h>
功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间
说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
返回指向dest的指针。" 参考技术B 你的struct cus的成员变量是声明为数组还是指针,如果是指针,要另外再对其分配内存。追问
struct cus
struct customer customer_0;
struct air_time air_0;
struct cus *next;
;
不是指针
C语言--strcpy()函数
C语言 strcpy() 函数用于对字符串进行复制(拷贝)。
头文件:string.h
语法/原型:
char* strcpy(char* strDestination, const char* strSource);
参数说明:
- strDestination:目的字符串。
- strSource:源字符串。
strcpy() 会把 strSource 指向的字符串复制到 strDestination。
必须保证 strDestination 足够大,能够容纳下 strSource,否则会导致溢出错误。
返回值:目的字符串,也即 strDestination。
【实例】使用C语言 strcpy() 函数将字符串 src 复制到 dest。
#include <stdio.h> #include <string.h> int main() char dest[10] = 0 ; char src[10] = "liangchen" ; strcpy(dest, src); puts(dest); return 0;
//输出:liangchen
以上是关于c语言strcpy将一个结构体的数据复制到另一个后,出问题了的主要内容,如果未能解决你的问题,请参考以下文章