c语言字符串,字符指针知识,多态性和运算符重载等 - 爱问答

(爱问答)

c语言字符串,字符指针知识,多态性和运算符重载等

类似:一个函数如f(char* na),前面已写了一个结构体数组(成员有姓名和电话)。现在我在主函数通过f函数输入一个名字,当该名字与所定义的结构体数组中的名字重合,输出该名字的电话。问题是我在f函数里这样写:

long operator [](char* na){

int k,j=0;

for(int i=0;i<items;i++,table++){

if(strcmp(na,table->username)==0) 

k=table->telNum;  

else j++;

}

if(j==items) cout<<"Username does not exit"<<endl;number++;k=0;

return k;

结果只会输出0和出错语句。这是为什么呢?前面我在结构体里把name[10]一开始是写成*name的形式,不过在类array的构造函数中对其进行分配内存空间是是这样写的:

table->username=new char[strlen(table->username)+1]

结果在录入数组信息是就会报错,这又哪里出错了?

期待热心网友的解答…^^


你的这个肯定是有问题的

table->username=new char[strlen(table->username)+1]

你要了解C的字串是以结尾的,你的

strlen(table->username)

在username没有赋值前,它不可能有一个正确的值的

首先,table->username都不是一个合法的指针,你本来的目的就是为它赋值的,而它都能用strlen测长度了,就不用new赋值了

这个犹如母亲都没有出生,哪来的儿子

你的程序从

cin>>table->username;

就错了

C/C++的指针要先申请再使用的

类似你这种需要,username肯定不用指针的,它用char username[10];一般就可以了


相关标签:c语言运算

下一篇:输入两个正整数,辗转相除法计算并输出他们最大公约数,借助最大公约数,计算输出最小公倍数,用while实现

上一篇:ISO问题。。。

热门标签:
excel 网盘 破解 word dll
最新更新:
微软重新评估新的Outlook的使用时机 联想推出搭载联发科Helio G80芯片组的Tab M9平板 英特尔创新大赛时间确定! 微软Edge浏览器在稳定渠道中推出Workspaces功能 英伟达RTX4060TiGPU推出MaxSun动漫主题! 谷歌地图为用户提供了街景服务! GameSir 在T4 Kaleid中推出了一款出色的控制器! 微软开始在Windows 11 中测试其画图应用程序的新深色模式! LG电子推出全球首款无线OLED电视 英伟达人工智能芯片崭露头角! Steam Deck可以玩什么游戏-Steam Deck价格限时优惠 雷蛇推出CobraPro鼠标 Kindle电子阅读器可以访问谷歌商店吗 Windows10如何加入组策略 window10图片查看器怎么没有了?