大家好,我正在尝试将一个string
赋值给一个char *
指针。下面是我的代码,但我收到这个警告:assignment makes integer from pointer without a cast.
在C语言中正确处理字符串的方式是什么?
char* protoName = "";
if(h->extended_hdr.parsed_pkt.l3_proto==0)
*protoName = "HOPOPT";
else if(h->extended_hdr.parsed_pkt.l3_proto==1)
*protoName = "ICMP";
else if(h->extended_hdr.parsed_pkt.l3_proto==2)
*protoName = "IGMP";
else if(h->extended_hdr.parsed_pkt.l3_proto==3)
*protoName = "IGMP";
else if(h->extended_hdr.parsed_pkt.l3_proto==4)
*protoName = "IGMP";
char all[500];
sprintf(all,"IPv4','%s'",* protoName);
char *protoName
定义了一个指向字符的指针,名为protoName
。并不存在所谓的“字符列表”。该指针可以指向单个字符,也可以指向字符数组、字符串,并且对于所有这些组合,它都可以指向堆栈或堆上的内存。它还可以指向垃圾数据,但这是另一个问题的答案。 - Nik Bougalis