有关const char到char的问题。。。
代码很简单,来源于《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的话要怎么改源程序才行???谢谢喽。。。。
[解决办法]
stu.name="TanHaoQiang"; ==》strcpy (stu.name,"TanHaoQiang"); 这样也可以的。
[解决办法]
strcpy(stu.name, "TanHaoQiang");
[解决办法]
要用 strcpy(stu.name, "TanHaoQiang");拷贝函数才行。。
[解决办法]
stu.name="TanHaoQiang";
这里不对,name是个数组是个const char *常量,不能够修改其值,执行赋值操作是非法的。可以调用string库中函数strcpy函数来拷贝。
[解决办法]
- 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(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;}
[解决办法]
只能使用strcpy 函数来拷贝的,char 数组不能使用 赋值号来进行赋值操作的
[解决办法]
呵呵,听楼上的说,我有点庆幸没有用过浩强哥的书,不过c++入门,本人强力推荐范磊老师的零起点学通c++
这个视频那是一个经典啊,如果喜欢的话,百度一下吧!
希望对楼主有用