scanf(“%[^\n]“, str);是什么意思

本文详细介绍了scanf函数的特殊用法,如使用`%[^ ]`读取一行直到遇到换行符,并通过`*`跳过指定格式的输入。同时,解释了strchr函数的作用,它用于在字符串中查找指定字符首次出现的位置。示例代码展示了这两个函数的实际应用,并给出了相应的输出结果。
摘要由CSDN通过智能技术生成

1、scanf("%[^\n]",str)的用法。

1、 ^表示“非”,[^\n]表示读入换行符就结束读入。这是scanf的正则用法,一般情况下scanf是不能接收空格符,已接收到空格就结束读入,所以不能像gets()等函数一样接受一行字符串,所以用[^\n]就可以读取一行,直到碰到‘\n’才结束读入。
读取一个字符集,以\n作为结束标志

scanf("%[^\n]",str);

2、*表示该输入项读入后不赋予任何变量,即scanf("%*[^\n]%*c")表示跳过一行字符串。其中%c可以把\n吸收掉,防止影响后续输入。

#include<iostream>
using namespace std;
int main()
{
	char str1[1000] = {0};
	char str2[1000] = {0};
	char str3[1000] = {0};
	char str4[1000] = {0};
	scanf("%[^\n]", str1);    // 过程1
	scanf("%[^#]", str2);     // 过程2
	scanf("%*[^\n]", str3);   // 过程3 加了个*,本句功能相当于scanf("%*[^\n]");因为不会存储任何字符
	scanf("%*[^#]", str4);    // 过程4 加了个*,本句功能相当于scanf("%*[^#]");因为不会存储任何字符
	cout << str1 << str2 << str3 << str4 << endl;
}

输入:

You are my friend
Are you sure?\n#
Are you ok?
Can you speak English?
No, I can't. #

输出:

you are my friend
Are you sure?\n

二、strch的用法

这是C的库函数
原型:char *strchr(const char *str, int c)
作用:在参数 str 所指向的字符串中搜索第一次出现字符 c(一个无符号字符)的位置。
下面是示例代码:

#include<iostream>
#include<cstring>
using namespace std;
int main()
{
   char str[] = "I love you.cn";
   char ch = '.';
   char *point;

   point = strchr(str, ch);
   
   printf("|%c| 之后的字符串是 - |%s|\n", ch, point);
}

输出结果:

|.| 之后的字符串是 - |.cn|

有人不清楚为啥输出的是 ‘.’ 后面的字符串,请想想printf("%s", str)的原理。
另外,如果没有找到ch这个字符的话(例子里面是’.’),就返回NULL。

扩展链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值