sscanf与sprintf在C语言中的用法

发布于 / C语言 / Comments Off on sscanf与sprintf在C语言中的用法

sscanf与sprintf是C语言处理字符串的利器,可以用于快速格式化字符串。

我们知道,C语言中的输入和输出函数:printf和scanf第一个参数是格式化输出的内容。

例如%d为整数,%f为浮点等等,%d+%d表示格式为"整数+整数"的格式。总而言之,就是格式化输入或输出的内容。

可以说sscanf,sprintf与scanf,printf的差别在于,后者以用户的输入作为输入输出流,而前者以程序运行内存中的变量作为输入或输出流。

(这么说是不严谨的,只是为了更好的理解嘛。。。)

举个简单的栗子:

#include <stdio.h>

int main(void){
  char a[10] = "Hello";
  char b[10] = "World";
  char str[20];
  sprintf(str,"%s %s !",a,b);  //将a和b按照 "%s %s !" 的格式输出到str中 
  puts(str);
  return 0;
}

运行结果:

可以理解为sprintf是用第二个参数去格式化后面的量,然后将结果给第一个参数。

再看看sscanf:

#include <stdio.h>

int main(void){
  char str[] = "hello world";
  char a[10], b[10];
  sscanf(str,"%s %s",&a,&b);  //将str当作输入流,按照 "%c %c" 格式化并分别给a和b 
  printf("a = %s,b = %s",a,b);
  return 0;
}

运行结果:

使用这两个函数要注意:这两个函数的参数均为:第一个参数为字符串数组,第二个参数为格式,第三个以后的参数为其他变量。

另外,如果字符串数组不是char数组,而是C++的string,不可以直接用sscanf,应该用c_str()函数将string转化为char数组,例如:

sscanf(str.c_str(), "%d", &a);

否则编译器会报无法转换类型的错误

转载原创文章请注明,转载自: 斐斐のBlog » sscanf与sprintf在C语言中的用法
评论已关闭