读书人

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

发布时间: 2012-04-27 11:57:44 作者: rapoo

有关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++
这个视频那是一个经典啊,如果喜欢的话,百度一下吧!
希望对楼主有用

读书人网 >C++

热点推荐