barriers / 阅读 / 详情

char buffer[1024]; char digit[64]; sscanf(buffer,"ABCDEF=%s",digit); 哪位解释下

2023-07-17 08:56:34
共3条回复
clou
* 回复内容中包含的链接未经审核,可能存在风险,暂不予完整展示!
sscanf 是字符串格式化函数。
%s是最简单的实现,其实你这个语句就等于是字符串拼接,将buffer内容和引号中的内容拼接后给digit。假如buffer是“abcdef",那么执行后digit就是”ABCDEF=abcdef"。

http://baike.b***.com/view/1364018.htm
这里有很详细的说明和例子了,自己慢慢看看。
真可

char buf[512] ;

sscanf("123456 ", "%s", buf);//此处buf是数组名,它的意思是将123456以%s的形式存入buf中!

printf("%s ", buf);

结果为:123456

再也不做稀饭了

要求你输入ABCDEF=

把之后的字符放入digit

相关推荐

c++中sscanf函数与sprintf函数的用法

一.sscanf 读取格式化的字符串中的数据 sscanf和scanf类似,都是用于输入的,只是后者以屏幕为输入源,而前者以固定字符串为输入。 sscanf() 是从一个字符串中读进与指定格式相符的数据 二.sprintf与printf的用法很类似,只不过是前者输出到指定的目标,后者输出到屏幕。 sprintf()指的是字符串格式化命令,主要功能是把格式化的数据写入某个字符串中。 int scanf(const char format [,agument]) 其中format可以是一个或多个 {%[ ][width][{h | l | l64 | L}]}type {a|b|c}表示a、b、c中选一,[d]表示d是可有可无的。 所以,format形式可以有: %s %5s %[a-z]5d 注意: %*[width][{h | l | l64 | L}]}type表示过滤满足条件的字符串,不向目标中输出。 1、基本用法,取字符串 string source0 = "1234456"; char str[521]; sscanf(source0.c_str(),"%s",str); sscanf(source0.c_str(),"%4s",str); 2、转换为整型数 string source0 = "123456"; int x; sscanf(source0.c_str(),"%d",&x); sscanf(source0.c_str(),"%3d",&x); 3、停止和范围 sscanf(source0,"%[^a]",str); //遇到“a”停止 sscanf(source0,"%[^c]",str); //遇到“c”停止 sscanf(source0,"%[1-9A-Z]",str); //只取范围1-9和A-Z的字符 sscanf(source0,"%[^b-z]",str); //遇到“b-z”停止 sscanf(source0,"%[^c-z]",str); //遇到“c-z”停止 4、格式转换 char source[512] = "2015:8:1"; int a,b,c; sscanf(source,"%d:%d:%d",&a,&b,&c); 注意:这个地方a、b、c必须加引用,否则会报错。 5、复杂情况 char source[512] = "fjkdsjf/123456@fjkdsjf"; char str[512]; sscanf(source,"%*[ /]/%[ @]",str); 结果为:123456 sprintf sprintf与printf的用法很类似,只不过是前者输出到指定的目标,后者输出到屏幕。 int sprintf(char *buffer,const char *format,...) 举个例子: 结果: 1 buf = 1 buf = 00000001 2 buf = 2 buf = 00000002
2023-07-17 04:22:451

C语言 sscanf() 用法

直接用while循环扫吧正则:[^<]*([^>]+)>.*至于c怎么用正则嘛,反正我是没用过。
2023-07-17 04:22:542

sscanf()什么意思

你搞错了吧,scanf应该只有一个s的
2023-07-17 04:23:047

c语言中关于sscanf函数的运用及%n的用法

楼上谢谢你的回答 很好
2023-07-17 04:23:233

怎么利用sscanf() 读取字符窜中的整数 VC++?

char buff[512];sscanf("basis= 24 time is up","%[1-9]",buf); //取出整数printf("%s ",buf);int a=0;a=atoi(buff); //将数字字符串转化为整数
2023-07-17 04:23:362

谁有c语言实现的sscanf

C语言中有该输入语句及格式化输入1. 常见用法。 char buf[512] ; sscanf("123456 ", "%s", buf);//此处buf是数组名,它的意思是将123456以%s的形式存入buf中! printf("%s ", buf); 结果为:123456 2. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。 sscanf("123456 ", "%4s", buf); printf("%s ", buf); 结果为:1234 3. 取到指定字符为止的字符串。如在下例中,取遇到空格为止字符串。 sscanf("123456 abcdedf", "%[^ ]", buf); printf("%s ", buf); 结果为:123456 4. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。 sscanf("123456abcdedfBCDEF", "%[1-9a-z]", buf); printf("%s ", buf); 结果为:123456abcdedf 当输入: sscanf("123456abcdedfBCDEF","%[1-9A-Z]",buf); printf("%s ",buf); 结果为:123456
2023-07-17 04:23:431

>>sscanf怎么读取空格

如果是想跳过空格的话可以这样sscanf(str,"%*s%*c%s",newstr);
2023-07-17 04:23:502

c语言 能用sscanf函数提取一行代码中某个字符后面的字符串吗

把这句都提出来没问题吧?然后做判断, 拿到你想要的...
2023-07-17 04:24:004

单片机sscanf函数问题

红色部分表示读到的变量数量少于2(比如数据为12:30时可以读到2个变量,如果是12则只能读到一个变量),或者没有读到。sscanf的输入是字符串变量,而scanf的输入是控制台,对单片机来说,scanf的输入一般指串口输入。
2023-07-17 04:24:162

c语言中关于sscanf函数的运用及%n的用法

sscanf的功能和scanf差不多,只是多了一个参数,该参数放于第一个,用来标识要被解析的字符串,相对于scanf来说,他其实就是你输入的字符串。懂了不charszText[1024]="12334.4";sscanf(szText,"%d%f",&a,&f);a就等于123,f就是34.4f
2023-07-17 04:24:251

sscanf函数请教:

%x 表示一个十六进制数,在32位操作系统中为4个字节
2023-07-17 04:24:443

请问一下c语言中能不能用sscanf来区分中文和英文

行。但有好多细节要掌握好,比如sscanf(buffer, "%d %s", &index, name);中buffer里的串必须是第一个是整型数串,而后是空格(可以不至1个),再后是一个字符串。如果不是这样,读取就要出错。区分英文汉语也是可以的;不过没有区分开的必要啊,直接一个字符串“hello,你好”这样也是可行的。
2023-07-17 04:24:521

怎么使用sscanf ,跳过一串数据,从确定位置开始读取数据??

char str[32]; while(fgets(fp,line,1024)){ str[0] = ""; sscanf(line,"%*[^_]_%[^_]",str);}str里的值就是取出来的第二个下划线的内容
2023-07-17 04:25:003

C++请教sscanf函数的使用。

字符串输入格式 ,逗号分隔 用 "%[^,], 格式。逗号空白分隔 用 "%[^," "]%*c:sscanf(str,"%[^," "]%*c%lf,%lf,%lf",name,&iC1,&iC2,&iC3);空白分隔 用 %s %lf %lf %lf 格式#include <iostream>using namespace std;#include <stdio.h>#include <stdlib.h>int main(){char str[]="wang,3,4,5"; char name[10];double iC1,iC2,iC3;sscanf(str,"%[^,],%lf,%lf,%lf",name,&iC1,&iC2,&iC3);printf("%s %lf %lf %lf ",name,iC1,iC2,iC3);return 0;}输出double型,可以用%lf 格式。
2023-07-17 04:25:081

sscanf()如何实现?

sscanf与scanf类似,都是用于输入的,只是后者以键盘(stdin)为输入源,前者以固定字符串为输入源。举个例子给你看:char* pQueryStr=getenv("QUERY_STRING");char pName[256]; sscanf(pQueryStr,"name=%s",pName); printf("Hello %s! ",pName);最后显示出来的就是:Hello tom!
2023-07-17 04:25:151

c语言 sscanf(poststr,"m=%[^&]&n=%s",m,n)中的%[^&]是什么意思?

过滤掉&后的所有字符,比如abcd&efg,则只将abcd放入m中。。。
2023-07-17 04:25:234

C中的sscanf用来分隔字符串

sscanf("Beijing,1234,abc ","%[^,],%[^,],%[^ ]",buf1,buf2,buf3);%[^,]之间加上逗号
2023-07-17 04:25:313

sscanf函数如何获得数字

stdio.h前面多了个空格,然后scanf也没写对,scanf里面的内容也好奇怪,你是想完成什么操作
2023-07-17 04:25:382

sscanf怎么读取空格

sscanf(str,"%[^ ]%[ ]%s",s[0],s[1],s[2]); //关键在这里用的格式。第一个格式是以空格为读的结束第二个格式是只读空格,遇别的字符 读 结束第三个格式平时常用,就不多说了。下面是完整程序,说明怎样读得空格。假定已知字符串 "abcd 123"; 显然有3个空格。我们要把前后2段字符串读入 s[0],s[2], 中段空格读入s[1].输出 读到的3个字符串的 长度 和 字符串内容 (用 | 分开,以便你看得清楚)#include <stdio.h>main(){char str[]="abcd 123";char s[3][10];sscanf(str,"%[^ ]%[ ]%s",s[0],s[1],s[2]); //关键在这里用的格式。printf("%d %d %d ",strlen(s[0]),strlen(s[1]),strlen(s[2]));printf("%s|%s|%s ",s[0],s[1],s[2]);return 0;}输出为: 4 3 3abcd| |123
2023-07-17 04:25:541

sscanf函数针对unsigned char unsinged short 的用法

你想显示一个字符串吧? 你第一个参数用的有问题。第一个参数应该是个buffer。char * pBuffr = new char[5];memset(pBuffr,"0",sizeof(char)*5);sscanf(pBuffr,"%2X,%4X",&a,&b);
2023-07-17 04:26:121

怎样用sscanf取数据

#include #include int main(){int count, total, num;char str[200];char *s;while (gets(str) != NULL)//遇到EOF停止{count = total = 0;s = strtok(str, " ");while (s != NULL && sscanf(s, "%d", &num)){total += num;count++;s = strtok(NULL, " ");}printf("%d %d ", count, total);}return 0;}这个问题的关键就是sscanf每次读一个,而且不知道两个数之间空白字符的数目。所以这里用strtok,strtok用法可以参见百度百科,就是用来分割字符串的,在这里用它来跳过空白字符和前一个已经读过的数。
2023-07-17 04:26:191

c语言如何用sscanf取2个空格之间的字符?

charstr[]="lloyd2";intl=strlen(str);//这里是获得这个字符串的长度,长度为6//通过长度,我们可以获取到他的最后一个字符//由于数组下标是从0开始的,所以数组下标的最大值始终要比长度小1//那这个字符串的最后一个字符就是charc=str[l-1];
2023-07-17 04:26:291

C语言sscanf遇到回车。

读取之前,fflush(stdin)即可去掉回车。
2023-07-17 04:26:362

下面sscanf用法中"%*[^/]/%[^@]",求解释,尤其是第二个/,怎么也想不明白呢?

跳过这个分界的/
2023-07-17 04:26:443

sscanf(buf, "%d %s %d %g", id2, rname2, age2, salary2);//sscanf可以读出二进制文件吗?

应该不可以, sscanf() 只是对内存字符串的操作,你可以看下这个函数fscanf()的使用,可以对文件进行格式化读取
2023-07-17 04:26:511

下面sscanf用法中"%*[^/]/%[^@]",求解释,尤其是第二个/,怎么也想不明白呢?

关于第二个/,打个比方:假如有字符串“1_2_3_4”,那么使用规则“%s_%s_%s_%s”可以分别提取出1、2、3、4,其中_作用跟/作用类似。
2023-07-17 04:26:582

c语言中使用sscanf函数读读空数据的问题

我也遇到了这个问题,一样GPS解析不了,唉,还是要自己一个一个的解啊,麻烦啊啊啊
2023-07-17 04:27:174

c语言sscanf截取字符串函数获取后缀名

sscanf函数是无法判断你这个“.”是字符串内的还是作为分隔符的。建议用 strchr(abd, "."),从字符串左边来获取位置,或者strrchr从后面获取。
2023-07-17 04:27:254

关于C函数sscanf()读取string中特定位置

跳过5个读3个:#include <stdio.h> main(){ char s1[120]="ATOM 1 SPH ION 1 -12.000 -6.000 -2.000 -0.07 1.70 ";float a1[3]; int i;sscanf(s1,"%*s %*s %*s %*s %*s %f %f %f",&a1[0],&a1[1],&a1[2]);for (i=0;i<3;i++) printf("%f ",a1[i]);printf(" ");return 0; } ---空格,tab 都是“空白”,只要它们用 空白分 隔 就可以用这种方法。一个 %*s 就是跳一个字符串,一个 %f 就是读1个 float.如果 用 %lf 就是读 double ( 无论 是 定点还是 e 格式)
2023-07-17 04:27:501

Lua标准库有没有类似sscanf()功能的函数

可以使用插入和提取操作符来实现C语言中的对应功能。 在C++中,C语言的格式化输入输出函数scanf和printf函数被转换成对cin和cout对象的插入和提取操作。即cin>>和cout和 a >> b; sprintf的转换也是类似的。
2023-07-17 04:27:571

scanf("%[^n],c)具体含义

建议你百度看下 正则表达式
2023-07-17 04:28:074

linux c语言 sscanf提取字符串中的数字乱码?

sscanf(cmt,"%*[^0-9]%[0-9]",imt);sscanf(cmt,"%*[^0-9]%[0-9]",imf);
2023-07-17 04:28:141

C++中如何用sscanf函数字符串从字符串中读取特定位置的数据

int i=0, j=0;sscanf("ABCD_12_21_S", "ABCD_%d_%d_S", &i, &j);
2023-07-17 04:28:221

求教c++用什么代替sprintf 和sscanf 在线等

#include <strstream>std::ostrstream ostr;ostr << abc << " " << de << "";std::cout << ostr.str() << std::endl;sprintf 可以用ostrstream替代. 记住以结尾, sscanf同理可以以istrstream代替
2023-07-17 04:28:291

C语言如何把一个字符串中的数值全提取出放在一个数组里面

用sscanf();例如:charstr[80]="1101";inta[4];sscanf(str,"%1d%1d%1d%1d",&a[0],&a[1],&a[2],&a[3]);
2023-07-17 04:28:382

VC中sscanf的取数

%f
2023-07-17 04:28:463

sscanf()没法读取带空格的数据,应该用什么替换呢

先修改一下add()函数,在写文件时,因为数据中可能会有空格,所以,各数据用引号括起来可好?fprintf(fp1,""%s" "%s" "%s" ", p->bookname,p->authorname,p->libraryID);或者,每个数据写一行,三行表示一个数据信息!第一行为作者第二行为书名第三行为ID第四行作者第五行书名。。。以此类推这样读的时候就不会有问题了
2023-07-17 04:28:532

单片机sscanf函数问题

红色部分表示读到的变量数量少于2(比如数据为12:30时可以读到2个变量,如果是12则只能读到一个变量),或者没有读到。sscanf的输入是字符串变量,而scanf的输入是控制台,对单片机来说,scanf的输入一般指串口输入。
2023-07-17 04:29:182

c语言 能用sscanf函数提取一行代码中某个字符后面的字符串吗

1、当然能。sscanf相当于格式输入,能够处理任何特殊格式的输入。2、例如:#include <stdio.h>int main(){char abd[80]="aaabc.jpg";char buf1[10],buf2[10];sscanf(abd, "%[^.].%[^.]", buf1, buf2); //通过ssanf获得文件名及后缀名printf("buf1=%s buf2=%s",buf1, buf2);}
2023-07-17 04:29:271

调用sscanf获取字符串,如何保证不越界

char buff[512];sscanf("basis= 24 time is up","%[1-9]",buf); //取出整数printf("%s ",buf);int a=0;a=atoi(buff); //将数字字符串转化为整数
2023-07-17 04:29:341

c语言 sscanf(poststr,"m=%[^&]&n=%s",m,n)中的%[^&]是什么意思?

过滤掉&后的所有字符,比如abcd&efg,则只将abcd放入m中。。。
2023-07-17 04:29:434

C++用SSCANF函数提取出现的问题

#include <iostream>#include <string>#include <stdio.h>#include <iomanip>using namespace std;typedef struct{ char time[20]; double Latitude_value; char LatiNS[3]; double Longitude_value; char LongiEW[3]; char GPSQuality[2]; int NumOfSat; double AntennaHight; double HorizontalDOP;}GPS_INFO;int main(){ GPS_INFO GPS; char s[100]; char str[200]= "$GPGGA,102639.00,3906.89667,N,11720.83367,E,1,4,4.14,505.0,M,-2.3,M,,*7C"; sscanf(str,"%[^","],%[^","],%lf,%[^","],%lf,%[^","],%lf", s,GPS.time,&(GPS.Latitude_value), GPS.LatiNS,&(GPS.Longitude_value), GPS.LongiEW);setiosflags(ios::fixed); cout <<setprecision(10)<< GPS.time <<endl << GPS.Latitude_value <<endl << GPS.LatiNS[0] <<endl << GPS.Longitude_value <<endl << GPS.LongiEW[0] << endl; return 0;}setiosflags(ios::fixed)与setprecision(n)合用可以设置cout输出浮点数的小数位数,注意要包含#include <iomanip>文件具体可参见cout百度百科
2023-07-17 04:29:572

c语言编程,关于sscanf通过中文逗号截取字符串的问题

sscanf不支持中文,也不支持正则表达式。sscanf对中文进行扫描,结果不可预知。你可以在字符串中,自己查找逗号,然后再从逗号开始出sscanf。
2023-07-17 04:30:144

sscanf 输入字符串有空值时,怎么才能得到正确的结果

那就别指望sscanf了,它是以空格、回车、横制表符等作为字符串间的分隔符的,就是说遇到空格等时就认为前面的字符串输入完毕了,并将其正确读入。要想得到有空格的字符串可以选择gets、fgets等,也可以自己写一段代码或函数实现。
2023-07-17 04:30:211

linux 驱动中sscanf识别不了“:,#,=”这些分隔符,但是应用层空间却可以

驱动属于内核,在内核空间里没有C库,所以没有sscanf,printf。
2023-07-17 04:30:401

sscanf返回值为1是什么意思

sscanf返回值为1表示读到了一个有效数据,sscanf()的返回为读有有效数据的个数!例1:char str[]="124 abc" ;int a=0,b=0 ;sscanf( str , "%d %d" , &a , &b ); //想读入两个整数,但是串中只有一个数值123,另一个不是数值(abc), 这时,读入的有效数据只有一个a=123, 而b没有读到有效数据,因此,返回值为1例2:char str[]="124 abc" ;char a[10] , b[10] ;sscanf( str , "%s %s" , a , b ); //这时会读到两个字符串,a="123" , b="abc" 函数返回值 为2
2023-07-17 04:30:483

一个格式为hh:mm:ss的字符串s例如"12:34:56",如何仅用一条sscanf语句得到hh

CString s;int hh,mm,ss;s="12:34:56";sscanf(s,"%02d:%02d:%02d",&hh,&mm,&ss);
2023-07-17 04:30:561

利用sscanf语句提取某个字符

用 : 来分隔即可char* url = "<spia:xingtom@17a2.18.1.133>";char uri[10] = {0};sscanf(url, "%*[^:]:xing%[^@17a2]", uri);printf("%s ",uri);
2023-07-17 04:31:031

sscanf函数针对unsigned char unsinged short 的用法

你想显示一个字符串吧?你第一个参数用的有问题。第一个参数应该是个buffer。char*pBuffr=newchar[5];memset(pBuffr,"0",sizeof(char)*5);sscanf(pBuffr,"%2X,%4X",&a,&b);
2023-07-17 04:31:171

从文件中读取内容时,sscanf()函数与read()函数有什么区别?

read函数时用在FILE文件中的(用处是向文件中读入信息),scanf函数是用在向按用户指定的格式从键盘上把数据输入到指定的变量之中!!!!
2023-07-17 04:31:242