首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么sscanf只读取两行指针指向指针的行?

sscanf函数是C语言中的一个字符串处理函数,用于从一个字符串中按照指定的格式读取数据。它的原型为:

代码语言:txt
复制
int sscanf(const char *str, const char *format, ...);

其中,str是要读取的字符串,format是格式控制字符串,后面的参数是要读取的数据的地址。

对于为什么sscanf只读取两行指针指向指针的行,我们需要先了解sscanf函数的工作原理。sscanf函数会根据格式控制字符串format的内容,从字符串str中按照指定的格式读取数据,并将读取到的数据存储到后面参数中指定的地址中。

在格式控制字符串format中,可以使用百分号(%)开头的转换说明符来指定要读取的数据的类型。例如,%d表示读取一个整数,%f表示读取一个浮点数,%s表示读取一个字符串等。

根据题目中的描述,sscanf只读取两行指针指向指针的行。这里的两行指针指向指针是指格式控制字符串中使用了两个连续的%s,表示跳过两个字符串。%s是sscanf中的一种特殊的转换说明符,它表示读取一个字符串但不存储。

因此,当格式控制字符串中出现两个连续的%*s时,sscanf函数会跳过两个字符串,不进行存储操作。这就是为什么sscanf只读取两行指针指向指针的行。

需要注意的是,sscanf函数的返回值是成功匹配并读取的参数个数,如果返回值小于参数个数,说明读取失败。所以在使用sscanf函数时,需要根据返回值来判断读取是否成功。

关于sscanf函数的更多详细信息,您可以参考腾讯云的C语言开发文档中的相关内容:sscanf函数

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

为什么无返回值链表插入操作头结点一定要用指向指针指针

前言: 为什么链表插入操作头结点一定要用指向指针指针?之前自己对这个问题总是一知半解,今天终于花了点时间彻底搞懂了。 总的来说这样做目的是为了应对“空链表”情况。...为了防止往一个空链表中插入一个结点时,新插入结点那就是链表指针,这时如果链表结点是一级指针的话,那么出了链表插入函数作用域后,头结点又回到了原来空值。...比如下面的一段程序 1 // 链表指针为什么指向指针指针.cpp : 定义控制台应用程序入口点。...这就是因为第20直接将新节点值赋值给Phead,导致出了insert函数后,Phead又变成了NULL结点,而没有达到想要指向新结点效果。...如果对上面红字还是不理解可以看下面程序 1 // 为什么链表插入操作头结点一定要用指向指针指针_延续.cpp : 定义控制台应用程序入口点。

1.3K70

fscanf读取字符串-【C语言】15.文件操作

文件指针   缓冲文件系统中,关键概念是“文件类型指针”fscanf读取字符串,简称“文件指针”。   ...  出错   “w”(写)   为了输出数据,打开一个文本文件   建立一个新文件   “a”(追加)   向文本文件尾添加数据   出错   “rb”(只读)   为了输入数据fscanf读取字符串...【返回值】成功返回读取字符,读到文件结尾时返回EOF。 说明:fget() 返回字符实际上是文件流( FILE 结构体)中位置指针指向字符。...- fgets函数    fgets函数从指定流 stream 读取,并把它存储在 str 所指向字符串内。...stream -- 这是指向 FILE 对象指针,该 FILE 对象标识了要从中读取字符流。

2.1K30

【C进阶】—— 一篇文章带你学会C语言文件操作

比如: FILE* pf;——文件指针变量 这里定义pf就是一个指向FILE类型数据指针变量。可以使pf指向某个文件文件信息区(是一个结构体变量)。...编写程序时,在打开文件同时,都会返回一个FILE*指针变量指向该文件,也相当于建立了指针和文件关系。...当然我们也可以把两行内容全部读取并打印出来看看: char arr[] = "#########"; fgets(arr, 10, pf); printf("%s", arr); fgets(arr...用sscanf 5.2 sscanf 我们可以再来对比一下sscanf和fscanf: 它们还是第一个参数不同: fscanf是从流中读取格式化数据,参数是文件指针。...而sscanf是从字符串中读取格式化数据,所以参数还是字符指针。 好,那我们接着刚才上面写代码,把写入字符串数据再还原到一个结构体变量中。

16810

【C语言】文件相关操作

FILE* pf; //文件指针变量 pf 是一个指向FILE类型数据指针变量,它可以使 pf 指向某个文件文件信息区(本质上是一个结构体变量),通过该文件信息区中信息就能够访问该文件;也就是说...,fopen 函数会返回一个 指向该文件 FILE* 指针变量,从而建立指针和文件关系。...4、fgets 与 fputs 函数功能 fgets:从文件中读取字符到内存中;fputs:从内存中输出一字符到文件中。...,适用于标准输入流(键盘、屏幕); fscanf:scanf 函数也是格式化输入函数,不过它适用于所有输入流; sscanfsscanf 是专门针对字符串操作函数,用于将字符串数据转换为格式化数据..."); return 1; } //设置文件指针指向最后一个字符 fseek(pf1, -1, SEEK_END); //求出文件指针相对于起始位置偏移量 int ret = ftell

2.9K00

【C】语言文件操作(一)

本章重点 : 为什么使用文件 什么是文件 文件打开和关闭 文件顺序读写 文件随机读写 文本文件和二进制文件 文件读取结束判定 文件缓冲区 因内容比较多,为方便大家吸收,这一篇介绍1,2,3,4...我们可以创建一个FILE*指针变量: FILE* pf;//文件指针变量 定义pf是一个指向FILE类型数据指针变量。可以使pf指向某个文件文件信息区(是一个结构体变 量)。...指针变量指向该文件,也相当于建立了指 针和文件关系。...对象指针 打开方式如下: “r”(只读) 为了输入数据, 打开一个已经存在文本文件出错 “w”(写) 为了输出数据,会覆盖原数据 打开一个文本文件建立一个新文件 “a”(追加) 向文本文件尾添加数据...* stream ); 示例: //按照顺序读取文本行 // fgets //读到内容将被放到指针str指向字符数组中 //num要复制到str 最大字符数(包括终止空字符),真正读到字符是num

21920

C语言从入门到实战——文件操作

读取和写入文件时要确保文件指针指向正确位置,可以使用 fseek() 函数来调整文件指针位置。 每次读取或写入文件后,都要检查函数返回值,以确保文件操作成功。....); 其中,stream 是指向读取文件指针,format 是要读取数据格式字符串,... 表示可以接收任意数量和类型参数,用来接收读取数据。...size 是每个数据项大小(以字节为单位),count 是要读取数据项数量, stream 是一个指向读取文件指针。...fgets 在C语言中,fgets函数用于从文件中读取文本。...读取每一被存储在名为buffer字符数组中,并随后被打印到控制台上。最后,关闭文件以释放系统资源。

22310

C语言文件操作

目录 1.为什么使用文件 2.什么是文件 2.1 程序文件 2.2 数据文件 2.3 文件名 3.文件打开和关闭 3.1 文件指针 3.2 文件打开和关闭 4.文件顺序读写 4.1 对比顺序读写...为什么使用文件?...这些信息是保存在一个结构体变量中。该结构体类型是有系统声明,取名FILE. 创建一个文件指针变量:FILE* pf; 定义pf是一个指向FILE类型数据指针变量。...可以使pf指向某个文件文件信息区(是一个结构体变量)。通过该文件信息区中信息就能够访问该文件。也就是说,通过文件指针变量能够找到在磁盘中与它关联文件。...sscanf :从一个字符串中转化成一个格式化数据   sprintf 是把一个格式化数据转化成字符串 5.

4K20

CC++文件操作IO流

FILE* f;//文件指针变量 定义f是一个指向FILE类型数据指针变量。可以使pf指向某个文件文件信息区(是一个结构体变量)。...通过该文件信息区中信息就能够访问该文件,即通过文件指针变量能够找到与它关联文件,就如上图一样,f指向了文件信息区。...fscanf是针对所有输入流格式化输入语句 fprintf是针对所有输出流格式化输出语句 而对于sscanf和sprintf sscanf是从字符串中读取格式化数据  sprintf是将格式化数据写入字符串...如果要求在外存上以ASCII码形式存储,则需要在存储前转换。以ASCII字符形式存储文件就是文本文件。 文件读取结束判断 feof函数 feof函数用来判断文件读取结束原因是什么?...二进制文件读取结束判断,判断返回值是否小于实际要读个数。

75430

熬夜整理万字CC++总结(二),值得收藏

0.为什么使用指针 假如我们定义了 char a=’A’ ,当需要使用 ‘A’ 时,除了直接调用变量 a ,还可以定义 char *p=&a ,调用 a 地址,即指向 a 指针 p ,变量 a(...char 类型)占了一个字节,指针本身大小由可寻址字长来决定,指针 p 占用 4 个字节。...<<*p<<endl;这一不可以执行,void*指针只可以储存变量地址,不可以直接操作它指向对象 由于void是空类型,保存了指针值,而丢失了类型信息,我们不知道他指向数据是什么类型指定这个数据在内存中起始地址...#include int sscanf(const char *str, const char *format, ...); 功能:从str指定字符串读取数据,并根据参数format...读取指定宽度数据 void test02(){ char buf[1024] = { 0 }; //跳过前面的数字 sscanf("123456aaaa", "%7s", buf); printf

1.2K20

【C语言】与文件有关操作

一般都是通过一个FILE指针来维护这个FILE结构变量,这样使用起来更加方便。 FILE* pf; 定义pf是一指向FILE类型数据指针变量。...可以使pf指向某个文件文件信息区(是一个结构体变量)。通过该文件信息区中信息就能够访问该文件。也就是说,通过文件指针变量能够间接找到与它关联文件。...在编写程序时候,在打开文件同时,都会返回一个FILE*指针变量指向该文件,也相当于建立了指针和文件关系。 ANSIC 规定使用 fopen 函数来打开文件, fclose 来关闭文件。...", arr); fgets(arr, 20, pf); printf("%s", arr); fclose(pf); pf = NULL; return 0; } 在监视窗口中调试看看为什么读取会少读一次...fputs:一次写一字符 举个例子:写两行字符到data中 int main() { FILE* pf = fopen("data.txt", "w"); if (pf == NULL) {

15410

手把手教你深入理解cc++中指针

例如: int a = 10; int* p = &a; //定义指针变量 p *p = 20; //将指针p指向值修改为 20 上面两行代码中,我们首先定义了一个整型变量 a ,然后又定义了一个指针变量...p 指向 a .第二代码中,符号&代表取地址,相当于把变量a地址赋值给了指针变量p(p指向a),*加在指针变量前面代表解引用,意思找到指针p指向值,因此,第三代码意思就是讲p指向值也就是a...三,常量指针指针常量 请看下面两行代码: int a = 10; const int * p1 = &a; //常量指针 int * const p2 = &a; //指针常量 上面第二代码中...但是要注意,当用sizeof操作符操作arr时候,这个时候不能把arr当做一个指针来对待,因为sizeof操作数组时候它返回是数组字节长度,而单个指针变量占用四个字节。...请看下面两行代码: int *p1[10]; //指针数组 int (*p2)[10]; //数组指针 上面两行代码,p1是一个数组,而p2却是一个指针,它指向一个匿名数组。为什么是这样呢?

46331

C语言进阶-文件操作超详解

目录 为什么使用文件 什么是文件 分类(从文件功能角度) 文件名 文件打开和关闭 文件指针 fopen和fclose函数 打开方式表 文件顺序读写 顺序读写函数表 什么是输入输出流 fgetc/fgetc...文件读取结束判断 feof函数 ferror函数 读取结束判断方向  文件缓冲区 ---- 前言 ----  本章主要讲解: 掌握C语言文件操作和使用 文件操作各种函数基本使用 为什么使用文件...文件在读写之前应该先 打开文件(使用fopen函数) ,在使用结束之后应该 关闭文件(使用fclose函数) 注:在打开文件同时,都会返回一个 FILE* 指针变量指向该文件,相当于建立了指针和文件关系...注:每当函数运行一次后,流(标准输入流或者文件流)指针就会指向读取内容后一个空间首地址 示例: //创建并打开文件 FILE* pf = fopen("test.txt", "w");/...---- fseek函数 作用: 根据文件指针位置和偏移量来定位文件指针 注:每当读取文件数据时,文件指针指向下一个空间地址 定义: int fseek ( FILE * stream

96120

学习文件和文件操作

如果以ASCII码形式输出到磁盘,则磁盘中占⽤5个字节(每个字符⼀个字节),⽽ ⼆进制形式输出,则在磁盘上占4个字节(VS2019测试)。  ...那为什么我们从键盘输⼊数据,向屏幕上输出数据,并没有打开流呢?...文件打开和关闭  在打开⽂件同时,都会返回⼀个FILE*指针变量指向该⽂件,也相当于建⽴了指针和⽂件关系。...对⽐⼀组函数: scanf/fscanf/sscanf scanf 从标准输入流上读取格式化数据 fscanf 从指定输入流上读取格式化数据 sscanf  printf/fprintf/sprintf...把数据以格式化形式打印在指定输出流上  把格式化数据转换成字符串 文件随机读写 fseek 根据⽂件指针位置和偏移量来定位⽂件指针

8910

C语言进阶(十四) - 文件管理

filename指向了一个字符串,mode也指向了一个字符串。 函数返回类型是文件指针类型,打开成功就返回一个文件指针,这个文件指针指向了打开那个文件;打开失败则返回NULL(空指针)。...stream是指向FILE**对象指针,**该对象标识输入流。 返回类型是int。 如果读取成功,则返回读取成功字符ANSIC值; 如果读取失败或到文件末尾,则返回EOF。...读取结束条件包括已经成功读取num-1个字符、遇到换行符'\n'、遇到文件结束符EOF。 str指向字符数组指针,用来存放读取字符串。...num是读取并存入str最大字符数,包括'\0'在内。 stream是指向标识输入流FILE对象指针。 返回类型是char*。 如果读取成功,则返回str,否则返回NULL。...---- sscanf()函数 int sscanf(const char* str, const char* format, ...); 头文件为 功能:把指针str**指向字符串内容转换为格式化数据

94410

C 标准库基础 IO 操作总结

四、操作读写位置函数 当我们在操作文件时,有一个叫「文件指针家伙来记录当前操作文件位置,比如刚打开文件,调用了 1 次 fgetc 后,此时文件指针指向了第 1 个字节后边,注意是以字节为单位记录...所指文件读取以 ‘\n’ 结尾,包括 ‘\n’ 在内,存到缓冲区中,并在该行结尾添加一个 ‘\0’ 组成完整字符串。...; int snprintf(char *str, size_t size, const char *format, ...); sscanf 是从输入字符串中按照指定格式去读取相应数据,函数功能非常强大...最基本用法 取指定长度字符串 取第1个字符串 读取到指定字符为止字符串 读取仅包含指定字符集字符串 读取指定字符集为止字符串 读取两个符号之间内容(@和.之间内容) 给一个字符串 稍微复杂点...flush 操作,如果: 用户程序调用库函数从无缓冲文件中读取 或从缓冲文件中读取,且这次读操作会引发系统调用从内核读取数据,那么会读之前自动 flush 所有缓冲 程序退出时通常也会自动 flush

94330

【C语言】文件操作

文件打开和关闭 文件在读写之前应该先打开文件,在使用结束之后应该关闭文件;在编写程序时候,在打开文件同时,都会返回一个FILE*指针变量指向该文件,也相当于建立了指针和文件关系。...出错 “w”(写) 为了输出数据,打开一个文本文件 建立一个新文件 “a”(追加) 向文本文件尾添加数据...建立一个新文件 “rb”(只读) 为了输入数据,打开一个二进制文件 出错 “wb”(写) 为了输出数据,打开一个二进制文件 建立一个新文件...feof - 文件读取结束判定 在文件读取过程中,不能用feof函数返回值直接用来判断文件是否结束。...而是应用于当文件读取结束时候,判断是读取失败结束,还是遇到文件尾结束。

8710

轻松拿捏C语言——【文件操作】

函数原型: fgetc int fgetc ( FILE * stream ); 读取当前字符正常,返回读到指针ASCII码值,并且文件光标(也称为文件位置指示器或文件指针指向下一个位置;读取失败或遇到文件结束...str 指向复制读取字符串 char数组指针。...1.2 函数对比 scanf/fscanf/sscanf sscanf 从字符串中提取格式化数据,可以理解为将字符串转成格式化数据 int sscanf(const char *str, const...它原型类似于printf,但它是将数据写入一个文件(由文件指针指定),而不是写入标准输出(通常是屏幕) sscanf、sprintf是从字符串中读取、写入,fscanf、fprintf从文件中读取、写入...; 允许改变这个位置指针(光标),从而可以在文件任何位置开始读取或写入 stream:一个指向 FILE 指针,该 FILE 对象标识了要移动位置指针文件。

6510
领券