int scanf(const char *format, ...);
int fscanf(FILE *stream, const char *format, ...);
int sscanf(const char *str, const char *format, ...);
其中的format可以是一个或多个 {%
[width] [{h | l | I64 | L}]type | ' ' | '\t' | '\n' | 非%符号}
注:
1、 * 亦可用于格式中, (即 %*d 和 %*s) 加了星号 (*) 表示跳过此数据不读入. (也就是不把此数据读入参数中)
2、{a|b|c}表示a,b,c中选一,[d],表示可以有d也可以没有d。
3、width表示读取宽度。
4、{h | l | I64 | L}:参数的size,通常h表示单字节size,I表示2字节 size,L表示4字节size(double例外),l64表示8字节size。
5、type :这就很多了,就是%s,%d之类。
6、特别的:%*[width] [{h | l | I64 | L}]type 表示满足该条件的被过滤掉,不会向目标参数中写入值
支持集合操作:
%[a-z] 表示匹配a到z中任意字符,贪婪性(尽可能多的匹配)
%[aB'] 匹配a、B、'中一员,贪婪性
%[^a] 匹配非a的任意字符,贪婪性
例子:
char *str = "u0p18968Fanonymous@ttttt.xxx.comTroot@ppppp.yyyy.com\n aaaa\r\n";
//sscanf(str, "%[^F]F%[^T]T%s%[^ /t/n/r]", header, from, rcptto);
sscanf(str, "%[^F]F%[^T]T%s", header, from, rcptto);
fprintf(stderr, "header(%s), from(%s), to(%s)\n", header, from, rcptto);
输出结果:
header(u0p18968), from(anonymous@ttttt.xxx.com), to(root@ppppp.yyyy.com)
注:
scanf族函数会自动去除掉字符串中的空白字符' ', '\t', '\r', '\n'
分享到:
相关推荐
每种语言都对正则表达式有着不同程度的支持,在C语言中,有输入功能的这三个函数对正则表达式的支持并不强大,但是我们还是有必要了解一下。 首先来看看他们的原型: #include int scanf(const char *format, ...)...
fprintf、printf、sprintf、fscanf、scanf、sscanf_格式化输入输出
在C语言中,`sscanf()`、`vsscanf()`和`vscanf()`函数都是用于从不同来源读取数据并按指定格式进行解析的。它们是`scanf()`家族的一部分,提供了一种灵活的方式来处理输入数据。 1. `sscanf()`函数: `sscanf()`...
带有目录查询的fprintf、printf、sprintf、fscanf、scanf、sscanf_格式化输入输出
在C语言中,`printf()`, `sprintf()`, `scanf()`, 和 `sscanf()` 都是与输入输出相关的函数,它们都遵循类似的格式化规则,但用途和工作方式有所不同。下面将详细阐述这些函数的用法和特点。 1. **printf()**: - ...
`sscanf`函数类似于`scanf`,但是它从一个指定的字符串中读取数据而不是从标准输入(如键盘)。这个函数允许开发者从内存中的字符串读取符合特定格式的数据,并将其存储到变量中。 **参数解析:** - `str`:指向...
在C语言中,`scanf` 和 `sscanf` 是处理输入数据的两个重要函数,尤其适用于读取特定格式的文件或处理字符串。尽管它们的功能相似,但应用场景有所不同。`scanf` 主要用于从标准输入流(如键盘输入)读取数据,而 `...
`sscanf` 函数是C语言中的一个标准输入输出库函数,主要用于从字符串中读取数据,它是`scanf`函数的变体,适用于处理已知来源的字符串输入,而不是从标准输入流中读取。在标题"sscanf_sscanf_solutioncw5_"中,暗示...
在C语言和C++中,`sscanf`函数是`scanf`家族的一部分,用于从已格式化的字符串中读取数据。这个函数对于处理固定格式的数据输入非常有用,尤其是在需要从字符串中提取特定部分时。本篇文章将深入讲解如何使用`sscanf...
在Microsoft Visual Studio (VS) 编译环境中,为了提高代码的安全性,开发团队引入了一组带下划线后缀的函数,如`fopen_s`、`scanf_s`和`gets_s`,来替代传统的`fopen`、`scanf`和`gets`。这些带下划线的函数在处理...
它的工作方式类似于`scanf`函数,但`sscanf`是从指定的字符串中读取数据而不是从标准输入设备。其基本语法格式如下: ```c int sscanf(const char *str, const char *format, ...); ``` - `str`: 指向包含待解析...
它类似于`scanf`函数,但输入源不是标准输入(如键盘),而是用户指定的字符串。这使得`sscanf`在处理文件数据、日志分析以及任何需要解析特定格式字符串的场景中非常有用。 #### 二、sscanf函数的基本格式 `...
2. **重定向scanf**: 重写中的fscanf函数,使其从UART读取数据。 3. **实现getchar**: scanf会调用getchar函数来读取字符。这里需要实现一个getchar函数,它在接收到新的字符时返回,并可能需要处理数据接收中断。 4...
它的工作方式与`scanf`相似,但其输入来源不是键盘而是内存中的字符串。`sscanf`能够根据用户定义的格式字符串读取数据,并将这些数据存储到用户提供的变量中。这使得`sscanf`成为一个非常强大的工具,尤其是在处理...
在TypeScript中,虽然没有内置的`fscanf`函数,但可以通过Node.js的`fs`模块结合正则表达式或其他方法实现类似的功能,读取和解析文件中的格式化数据。 总结起来,`fscanf`是C语言中用于格式化输入的强大工具,它...
`sscanf()`是C语言中的一个输入函数,用于从给定的字符串中解析数据,其工作方式类似于`scanf()`,但`scanf()`从标准输入(键盘)读取数据,而`sscanf()`则从已有的字符串中读取。这个函数在处理格式化的字符串输入...
在C语言中,标准输入输出函数scanf系列是处理数据输入的重要工具,但它们的功能相对有限,不支持复杂的正则表达式匹配。然而,对于一些需要进行更复杂格式验证的应用场景,如处理网络数据或文本解析,正则表达式的...
它的工作原理与`scanf`类似,只不过`scanf`是从标准输入流(通常是键盘)读取数据,而`sscanf`则是从一个固定的字符串中读取数据。这种灵活性使得`sscanf`在处理文本数据时非常有用。 #### 二、函数原型 `sscanf`的...