Ⅰ 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的任意字元,貪婪性