有关const char到char的问题。。。

jassically 2012-04-17 12:43:37
代码很简单,来源于《c++程序设计》,谭浩强版。。

#include<iostream>
using namespace std;
struct Student
{
int num;
char name[20];
float score[3];
};

int main()
{
void print(Student);
Student stu;
stu.num=12345;
stu.name="TanHaoQiang";
stu.score[0]=60;
stu.score[1]=70;
stu.score[2]=80;
print(stu);
system("pause");
return 0;
}

void print(Student stu)
{
cout<<stu.num<<stu.name<<stu.score[0]<<stu.score[1]<<stu.score[]2<<endl;
}


这是编译报的错。。。15 E:\dev-c++\DEV-CPP\程序\书例7-5.cpp incompatible types in assignment of `const char[12]' to `char[20]'

我将char name[20]改成string name。。程序就能运行了。。。。

我想知道一下,用char的话要怎么改源程序才行???谢谢喽。。。。
...全文
858 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
jassically 2012-04-18
  • 打赏
  • 举报
回复
谢谢喽。。。不过main前面的那句声明不需要吧。。。[Quote=引用 12 楼 的回复:]
C/C++ code

#include<iostream>
#include <string>
using namespace std;
struct Student
{
int num;
char name[20];
float score[3];
};
void print(Student stu);
int main()
{
void print……
[/Quote]
jassically 2012-04-18
  • 打赏
  • 举报
回复
那有木有推荐的书呢????[Quote=引用 16 楼 的回复:]
引用 10 楼 的回复:

把这句话提前到main函数???显然没用。。。还是报const char to char的问题。。汗死。。。引用 8 楼 的回复:
#include<iostream>
using namespace std;
struct Student
{
int num;
char name[20];
float score[3];
};

void pr……
[/Quote]
李荣强 2012-04-18
  • 打赏
  • 举报
回复
呵呵,听楼上的说,我有点庆幸没有用过浩强哥的书,不过c++入门,本人强力推荐范磊老师的零起点学通c++
这个视频那是一个经典啊,如果喜欢的话,百度一下吧!
希望对楼主有用
jassically 2012-04-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
楼主,你个地方也错了:stu.score[]2<<endl;应该是 stu.score[2]吧
[/Quote]

改完还是报错呢。。。。汗死了。。。。
jassically 2012-04-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
楼主,你个地方也错了:stu.score[]2<<endl;应该是 stu.score[2]吧
[/Quote]
额。。。这个打错了。。。囧了。。。。
jassically 2012-04-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
stu.name="TanHaoQiang"; ==》strcpy (stu.name,"TanHaoQiang"); 这样也可以的。
[/Quote]

其他的不用改嘛?
hen_hao_ji 2012-04-17
  • 打赏
  • 举报
回复
楼主,你个地方也错了:stu.score[]2<<endl;应该是 stu.score[2]吧
hen_hao_ji 2012-04-17
  • 打赏
  • 举报
回复
要用 strcpy(stu.name, "TanHaoQiang");拷贝函数才行。。
hideforever 2012-04-17
  • 打赏
  • 举报
回复
strcpy(stu.name, "TanHaoQiang");
dengxin1985 2012-04-17
  • 打赏
  • 举报
回复
stu.name="TanHaoQiang"; ==》strcpy (stu.name,"TanHaoQiang"); 这样也可以的。
iamnobody 2012-04-17
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

把这句话提前到main函数???显然没用。。。还是报const char to char的问题。。汗死。。。引用 8 楼 的回复:
#include<iostream>
using namespace std;
struct Student
{
int num;
char name[20];
float score[3];
};

void print(Student);
……
[/Quote]

这个还以为你知道了呢,如一楼所说.应该用strcpy

stu.name = "xxx"; 这个用法是错的.

还有,如果你还有点志向就别看他的书...

李荣强 2012-04-17
  • 打赏
  • 举报
回复
因为数组名是个常量,所以不能赋值,你把char name[20],改为char *name;就可以了,希望对你有用
hackbuteer1 2012-04-17
  • 打赏
  • 举报
回复
只能使用strcpy 函数来拷贝的,char 数组不能使用 赋值号来进行赋值操作的
一根烂笔头 2012-04-17
  • 打赏
  • 举报
回复

#include<iostream>
#include <string>
using namespace std;
struct Student
{
int num;
char name[20];
float score[3];
};
void print(Student stu);
int main()
{
void print(Student);
Student stu;
stu.num=12345;
strcpy(stu.name,"谭浩强比较坑爹");
stu.score[0]=60;
stu.score[1]=70;
stu.score[2]=80;
print(stu);
system("pause");
return 0;
}

void print(Student stu)
{
cout<<stu.num<<stu.name<<stu.score[0]<<stu.score[1]<<stu.score[2]<<endl;
}


一根烂笔头 2012-04-17
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
#include<iostream>
using namespace std;
struct Student
{
int num;
char name[20];
float score[3];
};

void print(Student);
int main()
{
[/Quote]

++
函数没有在main之前声明,你无法调用定义在main之后的函数
jassically 2012-04-17
  • 打赏
  • 举报
回复
把这句话提前到main函数???显然没用。。。还是报const char to char的问题。。汗死。。。[Quote=引用 8 楼 的回复:]
#include<iostream>
using namespace std;
struct Student
{
int num;
char name[20];
float score[3];
};

void print(Student);
int main()
{
[/Quote]
一根烂笔头 2012-04-17
  • 打赏
  • 举报
回复
stu.name="TanHaoQiang";
这里不对,name是个数组是个const char *常量,不能够修改其值,执行赋值操作是非法的。可以调用string库中函数strcpy函数来拷贝。
iamnobody 2012-04-17
  • 打赏
  • 举报
回复
#include<iostream>
using namespace std;
struct Student
{
int num;
char name[20];
float score[3];
};

void print(Student);
int main()
{
老规矩,先看本节效果图我们实现这个支付功能完全是借助小程序云开发实现的,不用搭建自己的服务器,不用买域名,不用备案域名,不用支持https。只需要一个简单的云函数,就可以轻松的实现微信小程序支付功能。核心代码就下面这些一,创建一个云开发小程序关于如何创建云开发小程序,这里我就不再做具体讲解。不知道怎么创建云开发小程序的同学,可以去翻看我之前的文章,或者看下我录制的视频:https://edu.csdn.net/course/play/9604/204528创建云开发小程序有几点注意的1,一定不要忘记在app.js里初始化云开发环境。2,创建完云函数后,一定要记得上传二, 创建支付的云函数1,创建云函数pay三,引入三方依赖tenpay我们这里引入三方依赖的目的,是创建我们支付时需要的一些参数。我们安装依赖是使用里npm 而npm必须安装node,关于如何安装node,我这里不做讲解,百度一下,网上一大堆。1,首先右键pay,然后选择在终端中打开2,我们使用npm来安装这个依赖。在命令行里执行 npm i tenpay安装完成后,我们的pay云函数会多出一个package.json 文件到这里我们的tenpay依赖就安装好了。四,编写云函数pay完整代码如下//云开发实现支付 const cloud = require('wx-server-sdk')cloud.init() //1,引入支付的三方依赖 const tenpay = require('tenpay'); //2,配置支付信息 const config = ;exports.main = async(event, context) => 一定要注意把appid,mchid,partnerKey换成你自己的。到这里我们获取小程序支付所需参数的云函数代码就编写完成了。不要忘记上传这个云函数。出现下图就代表上传成功五,写一个简单的页面,用来提交订单,调用pay云函数。这个页面很简单,1,自己随便编写一个订单号(这个订单号要大于6位)2,自己随便填写一个订单价(单位是分)3,点击按钮,调用pay云函数。获取支付所需参数。下图是官方支付api所需要的一些必须参数。下图是我们调用pay云函数获取的参数,和上图所需要的是不是一样。六,调用wx.requestPayment实现支付下图是官方的示例代码这里不在做具体讲解了,完整的可以看视频。实现效果1,调起支付键盘2,支付完成3,log日志,可以看出不同支付状态的回调上图是支付成功的回调,我们可以在支付成功回调时,改变订单支付状态。下图是支付失败的回调,下图是支付完成的状态。到这里我们就轻松的实现了微信小程序的支付功能了。是不是很简单啊,完整的讲解可以看视频。

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧