scanf正则表达式部分总结

正则表达式

scanf() 函数的正则用法:

scanf("%[^\n]",str) 其中的 \n 表示保存的字符串以换行符为截止,并且不存储该换行符号,这句话的作用是允许该函数读入除换行符以外的空白符(空格,table),平时输入时,scanf()不能像gets()一样读入空格等空白符;

scanf("%*[^\n]");  其中 \n 表示换行,其中*号表示该行内容不赋值给任何变量,直接跳过该行内容。

以下面的代码为例进行讨论

 1 # include <stdio.h>
 2
 3 int main(void)
 4 {
 5     char str1[100];
 6     char str2[100];
 7     char str3[100];
 8     char str4[100];
 9
10     scanf("%[^\n]",str1);
11     scanf("%[^#]",str2);
12     scanf("%*[^\n]",str3);
13     scanf("%*[^#]",str4);
14
15     puts(str1);
16     puts(str2);
17     puts(str3);
18     puts(str4);
19
20     return 0;
21 } 

输入内容: 其中的\n 表示换行

hello,   world!\n     //str1
hi,Alice.\n          //str2
hei,Alice.#\n      //str2
Hello,Friday!\n   //str3
Hi,Morning!#\n  //str3

输出内容:

hello,   world! // str1
hi,Alice.      // str2
hei,Alice.    // str2

讨论:

str1:以换行符为结束,且能够将空格符号读入并赋值给变量;

str2:以#号为结束,可以读入换行符,并将内容赋值给变量;

str3:无输出。以换行符为结束,但是不赋值给变量;

str4:无输出。以#号为结束,内容不赋值给变量。

原文地址:https://www.cnblogs.com/Robin5/p/12670882.html

时间: 2025-01-11 19:05:16

scanf正则表达式部分总结的相关文章

scanf正则表达式

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> void main() { char str[100] = { 0 }; //scanf("%s", str);//空格当做结束 //scanf("%[^\n]", str);//处理空格 遇到换号截止 //scanf("%[^=]", str);//=号作为结束符 遇到等号截止 /

C语言 scanf与正则表达式的搭配及应用

前言 当输入流是一个字符串,我们需要在其中提取我们所需要的数值时,正则表达式就显得很有用. 如果我们能在输入的时候,就过滤掉无用信息,就可以省去后期提取数值的步骤. 使用方法 scanf("%ns", str); 表示读取长度为n的字符串 输入:123456 输出str:123 ( 以scanf("%3s", str);为例 ) scanf("%[a-z]", str); 表示读取a-z的小写字母,出现非a-z的小写字母,立即停止读取. 输入:a

3.2.5.2 模拟C函数 scanf()功能

在Python里,没有与scanf()直接等同的功能函数,因此需要格式化输入,就需要使用正则表达式的功能来实现,并且正则表达式的功能比scanf()更加灵活,功能更加强大,下面就来列出一些等同的表达: scanf()格式字符串 正则表达式 %c . %5c .{5} %d [-+]?\d+ %e,%E,%f,%g [-+]?(\d+(\.d*)?|\.\d+)([eE][-+]?\d+)? %i [-+]?(0[xX][\dA-Fa-f]+|0[0-7]*|\d+) %o [-+]?[0-7]+

Codeforce727B --- Bill Total Value(字符串处理 正则表达式)

先说一下正则表达式 %*[a-z]表示忽略前面的小写字符,%[0-9]表示把紧接着非字符的连续数字存入t字符串中去; 从"abc123de4f"中得到"123"; #include <stdio.h> int main() { char s[50] = "abc123de4f", t[50] = {0}; sscanf(s, "%*[a-z]%[0-9]", t); printf("%s\n",

【C语言天天练(二十)】scanf函数详解

引言:scanf函数虽然是学习C语言时比较早就接触的一个函数,但在使用过程中,发现真正掌握它却并不容易.本文就通过各种例子来详细的总结一下该函数的各种用法,假设它的调用格式为 scanf("<格式化字符串>",<地址表>). 1.一般使用scanf函数时都是为某个变量赋值,不考虑它的返回值.但是任何函数都是需要返回的(即使返回类型用void,也可以认为只是调用了return语句,只是并没有返回什么东西而已),同样的scanf函数也是有返回的,它的返回值是成功读取

ZOJ 3427 Array Slicing (scanf使用)

题意  Watashi发明了一种蛋疼(eggache) 语言  你要为这个语言实现一个 array slicing 函数  这个函数的功能是 有一个数组初始为空  每次给你一个区间[ l, r)  和一些数   你要输出数组中下标在[l, r) 之间的数  然后删除这些数  然后把给你的那些数插入到数组的下标为 l 的位置 签到模拟题  一直没看懂题意  看了Watashi的scanf高端用法  弱到连scanf都不会用了  强行到cpp预习了一下  先记录一下那些并不了解的scanf用法吧 i

c语言中怎样用scanf()读入带空格的字符串?

楼主 发表于: 2011-01-14 15:39:55 #include <stdio.h> int main(void){ int i; char a[5]; scanf("%s", a); printf("%s\n", a); return 0; } 运行输入hello world 回车则输出的只是空格之前的部分,怎样把空格之后的部分也输出呢? 2楼 回复于: 2011-01-14 17:27:23 谁说scanf不能做到? #include <

sscanf函数和正则表达式

此文所有的实验都是基于下面的程序: char str[10]; for (int i = 0; i < 10; i++) str[i] = '!'; 执行完后str的值为 str = "!!!!!!!!!!" 我们把str的每个字符都初始化为惊叹号,当str的值发生变化时,使用printf打印str的值,对比先前的惊叹号,这样就可以方便的观察str发生了怎样的变化.下面我们做几个小实验,看看使用sscanf和正则表达式格式化输入后,str有什么变化. 实验1: sscanf(&q

hihoCoder 挑战赛7(正则表达式-栈)

题目1 : 正则表达式 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个字符串,判断其是否为合法的正则表达式. 一个正则表达式定义为: 1:0是正则表达式,1也是正则表达式. 2:P和Q都是正则表达式,则PQ是正则表达式. 3:P是正则表达式,则(P)是正则表达式 4:P是正则表达式,则P*也是正则表达式 5:P和Q都是正则表达式,则P|Q是正则表达式. 输入 输入包含多组数据. 每组数据为一行一个字符串,长度不超过100. 输出 对于每组数据,如果输入是合法