努力的周周 发表于 2019-2-25 21:25:45

关于strcpy的问题

#include <iostream>
#include <string.h>

union ID
        {
                char id_char;
                long id_num;
        };

int main()
{
       
        ID id_val;
        strcpy(id_val.id_char, "zyl");
        std::cout << "ID1 is " << id_val.id_char << "\n";
        id_val.id_num = 19911103;
        std::cout << "ID2 is " << id_val.id_num << "\n";

        return 0;
}

这段程序运行后出错,显示error C2664: 'strcpy' : cannot convert parameter 1 from 'char' to 'char *'
这是怎么回事,应该怎么改???

Croper 发表于 2019-2-25 21:45:03

char是一个字符,不是字符串,
要改成字符串的话,应该申明成
char id_char,不够再加长

努力的周周 发表于 2019-2-25 21:55:38

Croper 发表于 2019-2-25 21:45
char是一个字符,不是字符串,
要改成字符串的话,应该申明成
char id_char,不够再加长

还是不对,还是显示cannot convert parameter 1 from 'char' to 'char *'

Croper 发表于 2019-2-25 23:53:49

你这是没保存吧,我这儿是没问题的,
把你改过的代码贴上来

灰色的天空 发表于 2019-2-26 19:42:22

union ID
      {
                char* id_char;
                long id_num;
      };
改成这样

ALifeTime 发表于 2019-2-27 10:22:51

灰色的天空 发表于 2019-2-26 19:42
改成这样

是不是没有分配空间?

灰色的天空 发表于 2019-2-27 12:47:46

本帖最后由 灰色的天空 于 2019-2-27 15:34 编辑

ALifeTime 发表于 2019-2-27 10:22
是不是没有分配空间?
额,忘记分配空间了,我
再把strcpy()那一句变成id_val.id_char="zdd";这样就不用再手动分配空间了,系统就自动会分配空间在栈上。

鱼油_hi 发表于 2019-3-3 10:47:34

string copy 用的时候要指针类型!
因为他是把一个短数组的地址copy到另一个长数组!
页: [1]
查看完整版本: 关于strcpy的问题