函数原型:
int sscanf(const char *str, const char *format, …);
sscanf()与scanf()作用相似,只不过后者是从键盘中输入,而前者则是从指定的字符串中提取数据。
buffer
参数:
存储的数据
format
窗体控件字符串。
argument
可选自变量
sscanf()的返回值是它成功读取的字符串的个数(不过一般不用去关注这个返回值,知道一下就好)
如:
char arr[] = "hello world";
int n;
n = sscanf(arr, "%s%s", str1, str2);
这里n的值为2。
注意:sscanf读取字符串时默认以空格为分割
#include <stdio.h>
void main()
{
char arr[] = "abdce fghij klnm opqrst 1234";
char str1[10] = {0};
char str2[10] = {0};
char str3[10] = {0};
char str4[10] = {0};
int m = 0;
int n;
n = sscanf(arr, "%*s%3s%s%s%s%d", str1, str2, str3, str4, &m);
printf("%s\n", str1);
printf("%s\n", str2);
printf("%s\n", str3);
printf("%s\n", str4);
printf("%d\n", m);
printf("%d\n", n);
}
仔细阅读上面这段代码,包含了sscanf的几种用发,首先%*s表示它所对应的字符串就跳过,不用输入到变量(这里跳过的就是abdce ),%3s表示只输出该对应字符串的前三个字符,但是值得注意的这个字符串余下的部分不会被丢弃,会继续存储到下一个变量中。记住,后面的变量的这些参数都是传入的地址。
函数原型:
int sprintf(char *str, const char *format, …);
sprintf指的是字符串格式化命令,主要功能是把格式化的数据写入某个字符串中。sprintf 是个变参函数。使用sprintf 对于写入buffer的字符数是没有限制的,这就存在了buffer溢出的可能性。
//把整数123456 打印成一个字符串保存在str 中。
sprintf(str, “%d”, 123456); //产生”123456”;