scanf -- 英文意思是 scan (掃描)f == format (有格式),就是有格式輸入。

成都創(chuàng)新互聯(lián)公司服務(wù)項目包括河西網(wǎng)站建設(shè)、河西網(wǎng)站制作、河西網(wǎng)頁制作以及河西網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,河西網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到河西省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
scanf("%lf,%lf,%lf", -- 格式是1個double,1個逗號,1個double,1個逗號,1個double。
scanf("%lf%lf%lf", -- 3 個double,默認(rèn)格式,分隔符是空白(空格,tab, 換行。。。)。
對應(yīng)的輸入數(shù)據(jù)要按scanf 定義的格式。
如果你想 既能用 空白,又能用逗號 分隔,可以這樣寫:
int main(){
double a,b,c;
scanf("%lf%*1c%lf%*1c%lf",a,b,c);
if(ab)a=b;
if(ac)a=c;
printf("MAX=%7.2lf\n",a);
return 0;
}
%*1c 就是跳過一個符號的意思。
1,2,3
1 2 3
都沒問題,反正逗號也好,空白也好,我跳過去,不睬它。
如果是字符數(shù)組,可以使用strstr函數(shù)查找匹配。
strstr() 函數(shù)搜索一個字符串在另一個字符串中的第一次出現(xiàn)。找到所搜索的字符串,則該函數(shù)返回第一次匹配的字符串的地址;如果未找到所搜索的字符串,則返回NULL。
包含文件:string.h
函數(shù)名: strstr
函數(shù)原型:
extern char *strstr(char *str1, const char *str2);
語法:
char * strstr(str1,str2)
str1: 被查找目標(biāo) string expression to search.
str2: 要查找對象 The string expression to find.
返回值:若str2是str1的子串,則先確定str2在str1的第一次出現(xiàn)的位置,并返回此str1在str2首位置的地址。;如果str2不是str1的子串,則返回NULL。
如果是普通類型的數(shù)組,需要使用雙重循環(huán)來實(shí)現(xiàn)匹配。
例如:
int?a[10]={0,1,2,3,4,5,6,7,8,9,0};
int?b[3]={5,6,7};
int?i,j;
for(i=0;i7;i++){
for(j=0;j3;j++)?if(a[i+j]!=b[j])?break;?//進(jìn)行匹配,如果其中一個不匹配,中斷循環(huán)。
if(j==3){????//尋找到匹配
printf("匹配!");
break;
}
}
if(i==7){????//循環(huán)完仍未找到匹配
printf("不匹配!");
}
我這里運(yùn)行,沒有運(yùn)行時錯誤,只是按你的代碼結(jié)果不對。
調(diào)整后代碼如下:
#include?stdio.h
#include?string.h
char?*strstr(char*str1,char*str2)
{
int?n1?=?strlen(str1);
int?n2?=?strlen(str2);
int?flg?=?0;
char?*p1?=?str1;
char?*p2?=?str2;
if(n1n2)?return?NULL;
int?i;
for(i=0;in1-n2+1;i++)
{
p1?=?str1+i;
p2?=?str2;
while(*p2!=NULL)//
{
if(*p1!=*p2)?
{
flg?=?0;
p1++;
p2++;
break;
}
p1++;
p2++;
flg?=?1;????????????????
}
if(flg)?return?str1+i;//你到底要輸出什么,原函數(shù)是輸出位置int
}
return?NULL;//
}
int?main()
{
char?str1[]="str1adsfqwer";
char?str2[]="ads";
char?*p?=?strstr(str1,str2);
printf("%s\n",p);
return?0;
}
#include stdio.h
#include string.h
int main(int argc, char **argv)
{
char *A="abcd_V102.123.efg";
char B[1024];
char *p;
char *q;
p = strstr(A, "_V"); //匹配"_V"
if(p){
q = strchr(p + strlen("_V"), '.'); //匹配'.'
if(q){
p += strlen("_");
memcpy(B, p, q - p);
B[q-p] = '\0';
printf("%s\n", B);
}
}
return 0;
}
這就是數(shù)據(jù)庫的最基本功能么.... - -
把這些東西搞成一個對象,比如
struct xxx_info {
char *name;
char *localclient
....
}
再定義一個函數(shù)
struct * find(struct xxx_info *criteria) { ... }
這個函數(shù)接受一個xxx_info 作為參數(shù),返回匹配的xxx_info對象
傳參數(shù)的時候首先新建一個xxx_info對象,然后如果你有值需要匹配,就設(shè)置相應(yīng)的值,比如你要匹配localclient 和peerhost ,就寫:
xxx_info *a = (xxx_info *) malloc(...);
a-localclient = "什么值";
a-peerhost = "什么值";
不需要匹配的值讓它為NULL就行
find 函數(shù)的實(shí)現(xiàn),就是在一個數(shù)組(或者別的種類的集合)中遍歷,尋找和criteria對象符合的xxx_info
這只是基本,利用C語言,你想做出更類似面向?qū)ο蟮暮瘮?shù)接口,也沒問題...
int SStrlength(String Str)
{ int i=0;
while(Str.ch[i]!='/0')
這里是錯的,數(shù)組結(jié)束符是\0, 而不是/0
名稱欄目:c語言高級匹配函數(shù),常用匹配函數(shù)
網(wǎng)頁地址:http://chinadenli.net/article8/dsipdop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、網(wǎng)站設(shè)計公司、響應(yīng)式網(wǎng)站、ChatGPT、商城網(wǎng)站、網(wǎng)站收錄
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)