sscanf:从一个字符串中读进与指定格式相符的数据

来源:互联网 发布:淘宝详情关联模板 编辑:程序博客网 时间:2024/06/08 03:34

假如有 eng_1_2_3.jpg 的字符串,我们想取出其中的 1_2_3.jpg 子串,可以使用sscanf来实现。


我们使用如下测试数据进行测试:



测试代码如下:

char szbuf[MAX_PATH] = {0},szbuf1[MAX_PATH] = {0},szbuf2[MAX_PATH] = {0};FILE* fp = fopen("1.txt", "rt");if (fp){while (fgets(szbuf,MAX_PATH,fp) != NULL){sscanf(szbuf,"%[^_]_%s",szbuf1,szbuf2);cout<<"szbuf1 = "<<szbuf1<<" , szbuf2 = "<<szbuf2<<endl;}fclose(fp);fp = NULL;} else{cout<<"打开文件失败!"<<endl;}

测试结果:



下面附上 sscanf 函数其它使用的一些实例:

[cpp] view plain copy
  1. #include<stdio.h>  
  2. #include<stdlib.h>  
  3. #include<string.h>  
  4.   
  5. int main(){  
  6.     char str[100];  
  7.     //用法一:取指定长度的字符串  
  8.     sscanf("12345","%4s",str);  
  9.     printf("用法一\nstr = %s\n",str);  
  10.   
  11.     //用法二:格式化时间  
  12.     int year,month,day,hour,minute,second;  
  13.     sscanf("2013/02/13 14:55:34","%d/%d/%d %d:%d:%d",&year,&month,&day,&hour,&minute,&second);  
  14.     printf("用法二\ntime = %d-%d-%d %d:%d:%d\n",year,month,day,hour,minute,second);  
  15.   
  16.     //用法三:读入字符串  
  17.     sscanf("12345","%s",str);  
  18.     printf("用法三\nstr = %s\n",str);  
  19.   
  20.     //用法四:%*d 和 %*s 加了星号 (*) 表示跳过此数据不读入. (也就是不把此数据读入参数中)  
  21.     sscanf("12345acc","%*d%s",str);  
  22.     printf("用法四\nstr = %s\n",str);  
  23.   
  24.     //用法五:取到指定字符为止的字符串。如在下例中,取遇到'+'为止字符串。  
  25.     sscanf("12345+acc","%[^+]",str);  
  26.     printf("用法五\nstr = %s\n",str);  
  27.   
  28.     //用法六:取到指定字符集为止的字符串。如在下例中,取遇到小写字母为止的字符串。  
  29.     sscanf("12345+acc121","%[^a-z]",str);  
  30.     printf("用法六\nstr = %s\n",str);  
  31.     return 0;  
  32. }  


sscsnf函数的详细的使用说明可以查阅MSDN。

阅读全文
0 0