C 将字符串插入字符指针

标签 c string

大家好,我正在尝试将 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);

最佳答案

如果你只是想改变protoName指向的字符串文字,你只需要改变

*protoName = "HOPOPT";

protoName = "HOPOPT";

*protoName = 尝试写入 protoName 指向的第一个字符。这在您的情况下不起作用,因为 protoName 指向无法修改的字符串文字。

您还需要将 sprintf 调用更改为

sprintf(all,"IPv4','%s'", protoName);

%s 格式说明符表示您将传递一个指向以 nul 结尾的 char 数组的指针。 *protoName 为您提供 protoName 指向的第一个字符的字符代码; sprintf 不知道这一点,所以会将该字符代码视为要读取的数组地址。您不拥有此内存,因此从中读取的效果是不确定的;可能会发生崩溃。

顺便说一句,如果你有一个可写的 char 数组并想改变它的内容,你需要使用 strcpy 将一个新的 char 数组复制到

关于C 将字符串插入字符指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18492545/

相关文章:

c - 如何从c中的字符串中分离整数和运算符?

python - PIL draw.text() 将包含阿拉伯连字的字符串显示为两个单独的字形

c - C 查找某个字符在字符串中出现的次数

ios - 如何从 Swift 字符串中选择大写字母?

java - "ABC"和新字符串 ("ABC"之间有什么区别)?

c - 如何在LINUX/C中打印 "dd mm yyyy hh mm sec"格式的时间

c - 将文件分成相等的部分,每个部分 128 字节

从 Windows 中的命令提示符编译 C 代码?

c - 如何检测我进程的终止?

C程序。开关盒/用户输入。默认一直执行