gpt4 book ai didi

c - 在 sscanf 中指定可变字段宽度

转载 作者:行者123 更新时间:2023-12-04 16:34:28 24 4
gpt4 key购买 nike

我有以下 sscanf 语句:

sscanf(line, "%*s %511s %511s",protocol,hexdata)

现在行由以下形式组成 "a b c "。很明显,我通过提供 %*s 忽略了值 a。我将 bc 的值放入协议(protocol)和数据中。

我想做的是不想对 511 进行硬编码。我就是做不到。我尝试了以下方法,但它似乎不起作用。

    sprintf(log_buffer,"1234 56789");
printf("\n Buffer is : %s \n",log_buffer);

strcpy(format,"%*s "); // gives %*s
sprintf(format1, "%%%ds", 5); // gives %5s
printf("\n Format is : %s ",format);
printf("\n Format1 is : %s ",format1);
strcat(format,format1);
printf("\n new format is : %s ",format);

sscanf(log_buffer,format,name);

printf(" Name is : %s ",name);
printf(" \n Size of name %d ",strlen(name));

这给了我垃圾值。

示例输出:

Buffer is : 1234 56789
Format is : %*s
Format1 is : %5s
new format is : %*s %5s
Name is : �
8r�2�%*s %5s
Size of name 15

这里有什么问题?我只需要防止对变量字段进行硬编码。

最佳答案

my declarations are as follows char format[5]={0};

format 字符串可以包含 4 个字符和零终止符。这对于 "%*s %5s" 是不够的!

增加数组大小。

关于c - 在 sscanf 中指定可变字段宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8240153/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com