C++与C语言string类型的区别(7-2树种统计解题记录)-创新互联

创新互联建站主要从事成都做网站、成都网站制作、网页设计、企业做网站、公司建网站等业务。立足成都服务三江侗,10余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220

先上报错代码:

错误代码:
typedef struct Node *PtrNode,Node;
struct Node
{
    char name[30];
    int num;
};

void init_node(Node node[])
{
    strcpy((&node[0])->name,"Love");
    (node+1)->name="You";
    (node+2)->name="A";
    (node+3)->name="Zhao";
    (node+4)->name="Like";
    return ;
}
报错行: 

报错提示:
D:\Aproduct2\TestHIVC\main.c|31|error: assignment to expression with array type|
分析:

C语言不能像C++一样在初始化之外用str=“内容"的方法直接赋值,必须使用strcpy函数(string.h头文件下),如第29行

正确代码:
void init_node(Node node[])
{
    strcpy((&node[0])->name,"Love");
    strcpy((node+1)->name,"Like");
    strcpy((node+2)->name,"A");
    strcpy((node+3)->name,"Zhao");
    strcpy((node+4)->name,"You");
    return ;
}

代码中两种写法等价,都是数组首地址。

错误代码:
#include#include#includeusing namespace std;

int main()
{
    mapmp;
    map::iterator it;

    int n;
    float sum=0.0;
    string st;
    scanf("%d",&n);
    
    for(int i=0;ifirst).c_str(),it->second/sum*100);
    return 0;
}
分析:

scanf留下的换行符没吸收,添加一个吸收换行符的语句。

正确代码:
#include#include#includeusing namespace std;

int main()
{
    mapmp;
    map::iterator it;

    int n;
    float sum=0.0;
    string st;
    scanf("%d",&n);
    getchar();//吸收换行符
    for(int i=0;ifirst).c_str(),it->second/sum*100);
    return 0;
}
代码分析:

27行的输出我用的printf,(因为他相比cout效率更高)但是printf不能直接输出string类,需要用string内的库函数c_str将string进行转换,转换后%s输出即可。

string ,若添加头函数,即可使用string类,string类不能用scanf、printf操作,且使用cin会在读入空格后结束,若字符串中包含空格则使用getline(cin,string),cin.getline(st,30)是用于处理数组的,30表示输出的长度。

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


文章标题:C++与C语言string类型的区别(7-2树种统计解题记录)-创新互联
当前链接:http://azwzsj.com/article/poosc.html