社区
C语言
帖子详情
字符串的处理
老鱼趣多多
2003-09-13 10:22:12
strcpy(str1,str2)的用法问题,
str1必须是字符串数组名?
当我用一个char *str1时,
我给它分配了空间,str1=new char[20];
即使这样仍不能将指针str2内的东西考进去,
谁能告诉我为什么?
...全文
84
13
打赏
收藏
字符串的处理
strcpy(str1,str2)的用法问题, str1必须是字符串数组名? 当我用一个char *str1时, 我给它分配了空间,str1=new char[20]; 即使这样仍不能将指针str2内的东西考进去, 谁能告诉我为什么?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
weibz0525
2003-09-13
打赏
举报
回复
第3个不成功吗?
再好好试试
老鱼趣多多
2003-09-13
打赏
举报
回复
1 不成功
#include <string.h>
#include <stdio.h>
main()
{
char *str1="hello world";
char *str2="hello";
strcpy(str1,str2);
return 1;
}
2 成功
#include <iostream.h>
#include <string.h>
main()
{
char *str1=new char[20];
char *str2="hello world";
strcpy(str1,str2);
}
3 不成功
#include <iostream.h>
#include <string.h>
main()
{
char *str1=new char[20];
str1="hello world!";
char *str2="hello world";
strcpy(str1,str2);
}
4 成功
#include <string.h>
main()
{
char str1[]="hello world";
char str2[]="good";
strcpy(str1,str2);
}
综上,我想问的就是,
为什么当参数str1为字符数组的时候,可以允许在str1有内容的情况下,str2可以覆盖它,
而当参数str1为指针的时候,即使为其分配了空间,仍然不能将它覆盖???
sevencat
2003-09-13
打赏
举报
回复
或者直接拷
char a[256];
strcpy(a,"I get a C++ mark")
char *s=new char[222];
strcpy(s,"faint")
njtu
2003-09-13
打赏
举报
回复
应该没问题,数组也是作为char *处理的
char * strcpy(char *dest,const char *src)
{
assert(dest != NULL && src != NULL)
char *temp = dest;
while(*dest++ = *src++);
return temp;
}
昵称怎么改都存在
2003-09-13
打赏
举报
回复
让咱看看源程序吧.学习ing.
weibz0525
2003-09-13
打赏
举报
回复
不会吧,即使没分配空间,str1都会显示str2内容
DreamInCPP
2003-09-13
打赏
举报
回复
是你的代码写的有问题。
最好是不要用这种处理方式。C++的一个指导思想是:不要去重复已有的劳动。
你可以用string类。
如:
//:
//……
#include <string>
using namespace std;
string str1,str2;
str1=str1+str2;
//……
//:~
--By C++睡梦心经
晨星
2003-09-13
打赏
举报
回复
如果还有问题,吧你的代码帖一下吧。
晨星
2003-09-13
打赏
举报
回复
谁说的?完全可以。
weibz0525
2003-09-13
打赏
举报
回复
3
不知道你用的什么编译器,我在bc 5.0下是成功的
理论上我认为也行的通,str1是在堆上分配的,既然有空间,就应该可以赋值。
char *str2="hello world"这句应该是在全局数据区给字符串常量分配内存,然后返回头指针给str2,
str1在堆上,str2在全局数据区,都有自己的空间,相互赋值应该没问题,
字符串常量最好不要更改,但不是不能更改,只不过不安全(万一是只读存储器呢)
4
字符串常量是在栈区分配空间的,而且2者都是,没什么问题
ningzhiyu
2003-09-13
打赏
举报
回复
定义了常量,常量是不能在程序中改变的。
char *str1="hello world";//定义一个字符指针,指针指向字符串常量"hello world"的首位
char *str2="hello";//同上;
strcpy(str1,str2);//这里是对指针指向的常量空间操作!!!故不成功
//////////////
char *str1=new char[20];";//定义一个字符指针,指针指向new申请的内存块。
char *str2="hello world";";//定义一个字符指针,指针指向字符串常量"hello world"的首位
strcpy(str1,str2);//把str2指向的字符串常量拷贝到str1指向的内存块(是new申请的,在栈上,非常量,可以在程序中更改)。故成功//另,结尾没有把new的内存释放,内存泄漏
///////////
char *str1=new char[20];
str1="hello world!";
应该是语法问题,c是不支持字符串赋值str1="hello world!"的,除了在定义同时初始化,如:char *str1="hello world!"; 其他地方使用str1="hello world!";类似的语法均为非法。记得应该是这样,谭先生的书就有说的。
sakurar
2003-09-13
打赏
举报
回复
且你的3中new在堆上分配的内存的指针被丢弃掉了,无疑会造成内存泻漏。
sakurar
2003-09-13
打赏
举报
回复
To yuzhenhao(出人世间):
静态存储空间是只读的。
TStringManager集合了超过80种
字符串
函数
TStringManager集合了超过80种
字符串
函数,而且每个函数都有相关的帮助与例子。
C++语言
字符串
处理
函数
C++语言提供了比C语言更丰富的
字符串
处理
功能。它可以在
字符串
上经行输入,输出,合并,修改,比较,转换,复制,搜索等操作。使用这些现成的功能可以大大减少我们的编程的负担。 输入和输出的
字符串
函数,如printf...
pandas
字符串
处理
方法介绍
1 简介 在日常开展数据分析的过程中,我们经常需要对
字符串
类型数据进行
处理
,此类过程往往都比较繁琐,而pandas作为表格数据分析利器,其内置的基于...本文我就将带大家学习pandas中常用的一些高效
字符串
处理
方法..
从键盘输入一个
字符串
a,将
字符串
a复制到
字符串
b中,再输出
字符串
b,即编程实现
字符串
处理
函数strcpy()的功能,但要求不能使用
字符串
处理
函数strcpy()。
从键盘输入一个
字符串
a,将
字符串
a复制到
字符串
b中,再输出
字符串
b,即编程实现
字符串
处理
函数strcpy()的功能,但要求不能使用
字符串
处理
函数strcpy()。 **输入提示信息:"Input a string:" **输入格式要求:用gets...
R语言
字符串
处理
--stringr包
本文转载自:https://www.cnblogs.com/nxld/p/6062950.html 1....
字符串
处理
虽然不是R语言中最主要的功能,却也是必不可少的,数据清洗、可视化等的操作都会用到。对于R语言本身的base包提供的
字符串
基础函...
C语言
69,373
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章