sscanf和sprintf:
int sscanf (const char *str,const char * format,…);
按照指定格式在str中找到字符串,并放入后边的地址
从这个位置——格式符所在位置对应字符串中的位置
%[n]s:从这个位置读取指定宽度的数据
%[aBc]:从这个位置读取aBc中的一个,如果这个位置的第一个匹配失败,就不再匹配了,如果匹配成功,继续匹配直到匹配到不aBc中的字符为止
%[a-z]:从这个位置读取a到z中的任意字符,直到遇到不是a到z的字符
%[^a-z]:从这个位置读取数据,直到遇到a到z中的任意一个字符为止,读取的数据不包括最后检测的a到z的字符
%[^a]:原理同上,只是这里指定停止的字符为a
%s:忽略字符串(跳过)
%d:忽略整形数据
%[^@]:从这个位置忽略数据直到遇到字符@,@不忽略
(
%[^a]:忽略数据直到a
%[^a]:读取数据直到a
)
%*[@]:忽略字符@
只要不是格式字符都要放入[ ]中
参考: https://blog.csdn.net/zhouwei1221q/article/details/44890617?utm_source=app&app_version=4.15.0&code=app_1562916241&uLinkId=usr1mkqgl919blenint
sprintf( char *buffer, const char *format [, argument,…] );
sprintf的第一个参数是目的字符串
sprintf的作用是将一个格式化的字符串输出到一个目的字符串中,而printf是将一个格式化的字符串输出到屏幕。第二个格式字符可以有多个,对应的,后面的参数也可以有多个。
可以使用sprintf实现把整形数据存放到char 数组中。
int num=123343;
char buf[100];
sprintf(buf,"%d",num);
int len=strlen(buf);
for(int i=0;i<len;i++) printf("%d=%c\n",i,buf[i]);
snprintf()
int snprintf(char *str, size_t size, const char *format, …);
将…中的字符串按照format中的格式转化,然后取所有转化后的数据中的size个字节存入str代表的地址中,按顺序从起始地址依次往后存放。
1,如果数据少于size,就补0.
2,如果数据多余size,取size-1个,最后一个是’\0’
返回的是所有原来的字符串转化之后的字符个数。
失败返回-1.
注意:str是char*类型(数组名也是),
perror:
void perror(const char *s);
perror()用来将上一个函数发生错误的原因输出到标准设备(stderr)。参数 s 所指的字符串会先打印出,后面再加上错误原因字符串。。此错误原因依照全局变量errno的值来决定要输出的字符串。