sscanf()函数是我比较喜欢用的C语言字符串处理函数。
它的原型 百度百科 写道
sscanf() - 从一个字符串中读进与指定格式相符的数据.
函数原型:
int sscanf( const char *, const char *, ...);
int sscanf(const char *buffer,const char *format,[argument ]...);
buffer 存储的数据
format 格式控制字符串
argument 选择性设定字符串
sscanf会从buffer里读进数据,依照argument的设定将数据写回。
它的返回值 百度百科 写道
成功则返回参数数目,失败则返回0,错误原因存于errno中。
这里我要解释一句,成功返回的是匹配的数量(如"%[0-9]%[^a]",这个规则都满足,则返回2);失败则返回0;还有一种情况,当字符串到尾(即遇到'\0')时,返回-1!
我们可以自己定义一个指定长度的字符数组,将数组首地址传入该函数中,用于接收匹配字符串:
#include <stdio.h>
#include <string.h>
int main()
{
char temp[100] = {0};
char str[100] = {0};
int i = 0;
i = strlen(str);
str[0] = 'a';
str[1] = 'b';
str[2] = 'c';
str[3] = 'd';
str[4] = 'e';
str[5] = 'f';
i = sscanf(str, "%s", temp);
printf("sscanf():\t%d\n",i);
puts(temp);
str[0] = 'g';
str[1] = 'u';
i = sscanf(str, "%[^c]", temp); //注意!!这里不需要将temp中每个元素情况,事实上sscanf()函数会在匹配完成后,在字符串最后自动加一个'\0',用于结束。
printf("sscanf():\t%d\n",i);
puts(temp);
printf("char\tvalue\n");
for(i=0; i<10; i++)
{
printf(" %c \t %d\n",temp[i],temp[i]);
}
getchar();
return 0;
}
最后,程序运行结果为:
sscanf(): 1
abcdef
sscanf(): 1
gu
char value
g 103
u 117
0
d 100
e 101
f 102
0
0
0
0
可以看到定义的长度为100的temp字符数组,在第一次匹配之后并没有清空,而继续调用ssacnf()使用,会自动将'\0'添加在最后,虽然之后的字符依然存在,但是字符串以可以区分开来。
分享到:
相关推荐
字符数组是由单个字符构成的一维数组,每个元素通常是一个ASCII码值,可以用' '(单引号)来创建。例如,`char('hello')` 将创建一个字符数组。而字符串数组是MATLAB R2016b及以后版本引入的新特性,它是一个由多个...
这里,`str`是指向要读取的字符串的指针,`format`是一个包含转换说明符的字符串,用于指示如何解析输入,而`...`则是一系列变量,它们会接收从字符串中解析出的数据。 在描述中的例子中,我们有一个固定的字符串...
在C/C++编程中,`strtok`函数是一种常用的字符串处理工具,用于将字符串分割成多个子串。这个函数在处理复杂格式的数据时非常有用,...在这个过程中,理解字符串处理的基本原理和正确使用C语言中的字符串函数至关重要。
`"%s"` 是一个转换说明符,告诉 `sscanf` 从输入中读取一个字符串直到遇到空格或其他分隔符。 2. **取指定长度的字符串**: 使用 `%[n]` 格式化说明符,可以限制 `sscanf` 读取的字符串长度。例如,`"%4s"` 会从...
- sscanf:从字符串中读取格式化数据。 - strcat:沿水平方向连接字符串。 - strcmp和strcmpi:进行字符串比较,strcmpi不区分大小写。 - strfind:在字符串中查找子字符串。 - strings:MATLAB的字符串类,...
它与`scanf`函数非常相似,但不同之处在于`scanf`是从标准输入(通常是键盘)读取数据,而`sscanf`则是从一个固定的字符串中读取数据。 #### 二、sscanf函数的基本格式 `sscanf`函数的基本格式如下: ```c int ...
sscanf函数是C语言标准库中的一种输入函数,它可以从一个字符串中读取指定格式的数据,并将其存储在相应的变量中。下面是对sscanf函数的详细说明: 一、函数原型 int sscanf (const char *str,const char * format...
C语言并不内置字符串类型,而是通过char类型的数组来表示。在资源中的"C语言练习--字符串篇.docx"文档中,可能包含以下几种类型的字符串题目: 1. 字符串初始化与复制:了解如何初始化字符串,以及如何使用strcpy()...
总的来说,`sscanf`是一个功能强大的函数,可以灵活地从字符串中提取数据。理解其工作原理和各种格式说明符的用法对于编写处理字符串数据的程序至关重要。在软件开发中,熟练掌握`sscanf`可以提高代码的效率和可读性...
* `%s`:一个字符串 * `%x`:一个十六进制数 * `%p`:一个指针 * `%n`:一个等于读取字符数量的整数 * `%u`:一个无符号整数 * `%[]`:一个字符集 * `%%`:一个精度符 特别的格式符包括: * `%*[width] [{h | l | ...
在计算机科学中,字符串是最基本的数据结构之一,如何将一个字符串化成多个字符串并去除多余空格是非常重要的。本文将详细描述如何利用空格将一个字符串化成多个字符串,并去除多余空格。 首先,我们需要了解什么是...
详解C++中十六进制字符串转数字(数值) 主要有两个方法,其实都是对现有函数的使用: 方法1: sscanf() 函数名: sscanf 功 能: 从字符串格式化输入 用 法: int sscanf(char *string, char *format[,...
- **问题14**: 删除特定字符,遍历两个字符串,只保留第一个字符串中未在第二个字符串中出现的字符。 - **问题15**: 字符串转IP地址,将字符串按点分隔,逐段转换为整数。 - **问题16**: 实现`split_string`,...
读取字符串 "123456 asdf" 中的第一个字符串,并将其存储在 buf 中。 2. 取指定长度的字符串: ```c sscanf("123456 ", "%4s", buf); ``` 读取字符串 "123456 " 中的前 4 个字符,并将其存储在 buf 中。 3. 取到...
`定义了一个字符变量并赋值为大写字母A。 2. **字符函数** - `printf()` 和 `scanf()`:这两个是输入输出函数,用于显示字符或读取用户输入的字符。例如,`printf("字符是:%c", c);`会打印出字符变量c的值。 - `...
使用`strcpy()`函数可以将一个字符串的内容复制到另一个字符串数组中。 10. 字符数组的边界问题: 在使用字符数组处理字符串时,需要注意数组的边界和溢出问题,确保不会读取或写入超出数组大小的范围。 11. ...