Ⅰ c语言sscanf截取字符串函数获取后缀名
可以这么处理:
#include <stdio.h>
int main()
{
char abd[80]="abcde.jpeg";
char buf1[80], buf2[80];
sscanf(abd, "%[^.]", buf1);
//先读取.之前的字符串,到.为止
sscanf(abd, "%*[^.].%s", buf2);
//先忽略.之前的字符,再读取.之后的字符
printf("%s ", buf1);
printf("%s ", buf2);
return 0;
}
合并成一个就是:
sscanf(abd, "%[^.].%s", buf1, buf2);
Ⅱ 寻找一个c语言程序:从输入中过滤字符串
可以直接定义一个字符类型,然后用gets(),从键盘得到这个字符串,再这个字符串进行遍版历解析权
下面提供一个例子:从键盘输出一串字符并且输出其中的数字
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
intmain(void){
charstring[100];
inti;//循环变量
gets(string);
for(i=0;i<strlen(string);i++){
if((string[i]>='0')&&(string[i]<='9')){//判断每个字符是否是0~9直接的数
printf("%c",string[i]);//是数字的话直接打印
}
}
puts("");
puts("end");
returnEXIT_SUCCESS;
}
Ⅲ c语言编程,关于sscanf通过中文逗号截取字符串的问题
首先我要大言不惭说一句 在C/C++版块 折腾文件 字符串 我也是前十名的人物
然后我反驳一下 楼上 sscanf是可以用正则表达式的
接下来 我回答楼主
%[^,] 这样的结构 ^后面的是单字符
而不是中文的 逗号 是双字节的
在C里算是 字符串
因此不能用在这里
Ⅳ c语言 能用sscanf函数提取一行代码中某个字符后面的字符串吗
1、当然能。sscanf相当于格式输入,能够处理任何特殊格式的输入。
2、例如:
#include<stdio.h>
intmain()
{
charabd[80]="aaabc.jpg";
charbuf1[10],buf2[10];
sscanf(abd,"%[^.].%[^.]",buf1,buf2);//通过ssanf获得文件名及后缀名
printf("buf1=%sbuf2=%s",buf1,buf2);
}
Ⅳ 在VC++MFC函数sscanf()怎么过滤掉空格
网络知道搜的。
参考自:http://..com/link?url=S7bS9Opxlysq6YGIc5ycL2m0-9p0mDCMUYMtAvFwqioCbNFJfj__
你是想输入 7 89 5 ,然后输出的是7895 的话。可以建个字符串,把输入当字符串处理,然后遍历判断,遇到数字入栈就行呗。最后输出串 就OK了。
参考自:http://..com/link?url=iyCQGxYXVbVghfsC0im9QGmf0qlY_6prKjikmT9o6RP98LBxG9a0-uLyEo7Kl6jp31RPnnNrKx_PsDLUtpUuNq --这个是用Scanf录入空格
你可以把scanf改成下面scanf("%9[0-9a-zA-Z ]s",&a[0]);
注意Z后面有空格,还有%后面是9,小于10,是为了防止溢出。
Ⅵ c语言 sscanf(poststr,"m=%[^&]&n=%s",m,n)中的%[^&]是什么意思
%[^&]的意思是指输入的数据要遇上&才结束;
比如说在处理字符串中的scanf("%s",a);如果普通的话遇上了空格或者回车就结束了;
但把它改成这个样子scanf("%[^=]",a);就表示在输入数据中是以‘=’为结束标志的。在遇到空格和回车都不结束当前输入。
这句话有意思的地方就在于当使用这种特殊结束标志以后,这个标志不但不会被存储在对应的存储空间里,而且输出的时候按照普通方法即可输出所输入的字符;
比如我说,我输入了:
sdfasf asdfasf adf
asf
adsf
fds =
使用printf("%s",a);它就会按照原样式输出到’=‘前的位置;
Ⅶ 对于这个字符串sscanf中过滤条件怎么写
~~~或许吧,匆匆百年,剑意尤未散,世人却只知诛仙,不闻青颜!--以逍遥之道处心,以中庸之道处世
Ⅷ c语言中关于sscanf函数的运用及%n的用法
代码如下:
#include<stdio.h>
#include<string.h>
int main (){
char s[200];
int n,wei;
memset(s,0,sizeof(s));
while(gets(s)){
int cnt=0,sum=0,num;
char *p=s;
while(sscanf(p,"%d%n",&n,&wei)==1){
sum+=n;cnt++;wei++;
if(p) p+=wei;
}
printf("%d %d ",cnt,sum);
memset(s,0,sizeof(s));
}
return 0;
}
(8)sscanf过滤后缀名扩展阅读
scanf()函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。可以读入任何固有类型的数据并自动把数值变换成适当的机内格式。
scanf()函数返回成功赋值的数据项数,出错时则返回EOF。
其控制串由三类字符构成:
1、格式化说明符;
2、空白符;
3、非空白符;
用空白符结尾时,scanf会跳过空白符去读下一个字符,所以必须再输入一个数。这里的空白符包括空格,制表符,换行符,回车符和换页符。所以如果用scanf("%d ",&a)也会出现同样的问题。
Ⅸ C语言 sscanf() 用法
C语言函数sscanf()的用法 sscanf() - 从一个字符串中读进与指定格式相符的数据. 函数原型: int sscanf( string str, string fmt, mixed var1, mixed var2 ... ); int scanf( const char *format [,argument]... ); 说明: sscanf与scanf类似,都是用于输入的,只是后者以屏幕(stdin)为输入源,前者以固定字符串为输入源。 其中的format可以是一个或多个 {%[*] [width] [{h | l | I64 | L}]type | ' ' | '\t' | '\n' | 非%符号} 注: 1、 * 亦可用于格式中, (即 %*d 和 %*s) 加了星号 (*) 表示跳过此数据不读入. (也就是不把此数据读入参数中) 2、{a|b|c}表示a,b,c中选一,[d],表示可以有d也可以没有d。 3、width表示读取宽度。 4、{h | l | I64 | L}:参数的size,通常h表示单字节size,I表示2字节 size,L表示4字节size(double例外),l64表示8字节size。 5、type :这就很多了,就是%s,%d之类。 6、特别的:%*[width] [{h | l | I64 | L}]type 表示满足该条件的被过滤掉,不会向目标参数中写入值 支持集合操作: %[a-z] 表示匹配a到z中任意字符,贪婪性(尽可能多的匹配) %[aB'] 匹配a、B、'中一员,贪婪性 %[^a] 匹配非a的任意字符,贪婪性 注意:在读入的字符串是空字符串时,sscanf函数并不改变待读入到的字符串的值。
Ⅹ sscanf()什么意思
sscanf() 是C语言中从一个字符串中读进与指定格式相符的数据的函数。
函数原型为:
Int sscanf( string str, string fmt, mixed var1, mixed var2 ... );
int scanf( const char *format [,argument]... );
说明:
sscanf与scanf类似,都是用于输入的,只是后者以屏幕(stdin)为输入源,前者以固定字符串为输入源。
其中的format可以是一个或多个 {%[*] [width] [{h | l | I64 | L}]type | ' ' | '\t' | '\n' | 非%符号}
注:
1、 * 亦可用于格式中, (即 %*d 和 %*s) 加了星号 (*) 表示跳过此数据不读入. (也就是不把此数据读入参数中)
2、{a|b|c}表示a,b,c中选一,[d],表示可以有d也可以没有d。
3、width表示读取宽度。
4、{h | l | I64 | L}:参数的size,通常h表示单字节size,I表示2字节 size,L表示4字节size(double例外),l64表示8字节size。
5、type :这就很多了,就是%s,%d之类。
6、特别的:%*[width] [{h | l | I64 | L}]type 表示满足该条件的被过滤掉,不会向目标参数中写入值
支持集合操作:
%[a-z] 表示匹配a到z中任意字符,贪婪性(尽可能多的匹配)
%[aB'] 匹配a、B、'中一员,贪婪性
%[^a] 匹配非a的任意字符,贪婪性