www.3112.net > strCpy的问题

strCpy的问题

strcpy(a,b); //已经越界了,b数组的长度大于a数组的长度,a数组的长度就是5,不变,输出时由于输出到第一个'\0'截止,但a数组中没有\0',就一直找到'\0'

这种错觉来自于debug时看到的strcpy的源代码(K&R中,一般的笔试题也广为通用此源代码) 其实到最近才知道,debug时可以看到strcpy的实现,memcpy一般情况下比strcpy那样的实现效率要高,这是很明显的,哪怕字符数量比较小,memcpy起码也不输给strcpy,但是,事实上,在优化后的release汇编代码就能发现,其实strcpy这样常用的函数(虽然是C Runtime Library的函数),但是编译器实际是做了优化的,这些叫做内部函数(中文版VS2005标准译法),直接就通过strcpy生成了汇编代码,所以实现上就没有必要使用memcpy了,见下面的汇编代码.

拷贝字符串时越界,导致内存溢出,程序错误退出

[0]指向的是一个const(常量)字符串,常zhidao量就意味着不专可改变它的值,所以在调用strcpy(name[j],name[j+1])的时候,就会出错若申请空间后,就不会属出问题for (int m = 0; m < 5; m++) name[m] = new char[8]; strcpy(name[0],"China");

1、c语言中float是可以用来定义数组的.定义方式如下:float 数组名[元素个数];2、实质上,c语言中的基本数据类型和用户自定义类型都可以定义数组.

你的写法符合C++的语法,但不符合C.C的变量声明只能写能函数前部分,代码改成:void main() { int a=10; char s[4]="123"; strcpy(s,"aaa"); }

结果是 1 这个函数就是把后面的值赋给前面的 相当于等于号的意思 前面的值会被覆盖

问题出在形参类型char **.对bai于char **类型的p,p++只是使p指向du下zhi一个char*位置,而不能指向实参数组dao的下一行.可以这样:#include <stdio.h>#include <string.h>void Init_Meun(char p[][20]) //这里改为回答 char p[][20]{ int t; strcpy(*p++

重复,没有为目的字符常量开辟内存空间.可以直接char* p="yes";cout<<p<<endl;

strcpy()用的没问题但char* str1="0123456789";有问题.

网站地图

All rights reserved Powered by www.3112.net

copyright ©right 2010-2021。
www.3112.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com