关于字符数组,字符指针和字符串之间的赋值问题

在Vc++6.0中为什么不能用字符数组给字符指针赋值,也不能用字符串给字符指针和字符数组赋值。如果能应该怎么赋值。我用字符串的头文件是 #include<iostream> #include<string> usingnamespacestd; 另外我想用scanf给一个字符指针赋值,应该怎么做?

第1个回答  2019-06-13
是可以的,给你代码和注释:
(1)当然这不是赋值
charstr[]={"helloworld!"};//字符数组
char*pStr=&str;//字符串指针指向字符数组的内存地址
(2)如果要把字符数组的值赋给字符串指针,可以这样做:
char*pStr=newchar[sizeof(str)+1];//动态分配内存
strcpy(pStr,&str);//把字符数组内容拷贝到指针所指内存中
//。。。使用pStr
deletepStr;//释放内存
(3)你也可从命令窗口用scanf给字符串指针所指的内存赋值,这样做:
cout<<"pleaseinputastring"<<endl;
char*pBuff=newchar[100];//字符串缓存,长度可以稍微大一点,因为我们并不知道你要输入多长一个字符串进来
scanf("%s",pBuff);//从命令窗口获取一个字符串,并存入缓存中
//如果你想要把缓存中的字符串提取出来,可以这么做:
char*pExactString=new[strlen(pBuff)+1];//动态分配有效字符串长度
//注意:strlen(pBuff)返回的是有效字符串长度,而非100,而有效长度加1是为了放字符串结束符'\0'的
strcpy(pExactString,pBuff);//提取出有效字符串(会自动放上结束符)
//使用pExactString
deletepExactString;//释放内存
deletepBuff;//释放字符串缓存
相似回答