c语言 - 变量字符串限制 "%*s" 与 sscanf() ==> "data argument not used by format string"


int y = strlen(target);
sscanf(p,"%*s",y,buffer);

为什么上面的代码会导致warning: data argument not used by format string??

Apple clang version 11.0.0 (clang-1100.0.33.17)编译。

目标:将与字符串target中相同数量的字符放入字符串buffer中,其中p是指向字符串某个元素的char *

其他答案解释了sscanf不提供从参数中获取字段宽度。但就这一点而言:

Aim:将与字符串目标中相同数量的字符放入字符串缓冲区,其中p是指向某个元素的char*字符串的。

sscanf()等I/O功能相对较重。如果您只想将一个字符串(部分(复制到另一个字符串,那么memcpy()strncpy()将更适合该任务。或者strncat(),其属性使其在该特定任务中优于其他两个,因为有了它,您就没有超出memcpy()带来的源字符串的风险,也不需要手动确保终止memcpy()strncpy()带来的结果。示例:

*buffer = '';         // start with an empty string
strncat(buffer, p, y);  // concatenate the wanted region of the source string

对于sscanf()"%*s"中的*是参数抑制,而不是大小。

CCD_ 18简单地扫描CCD_。CCD_ 20未使用。


建议研究fgets()

我相信你想要

#include <string.h>
memcpy(buffer, p, strlen(target));

请注意,这不会添加终止NUL。这可以通过以下方式实现:

#include <string.h>
size_t len = strlen(target);
memcpy(buffer, p, len);
buffer[len] = 0;

最新更新