亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

C語言中庫函數調用幾例

2019-11-17 05:06:08
字體:
來源:轉載
供稿:網友
作者在使用C語言編程實踐過程中發現,盡管所編程序從語法上看正確的,能夠調試通過,但實際執行結果卻達不到程序編制的目的。現舉幾例說明如下,希望能起到幫助C語言初學者少走彎路的作用。

  一.調用unlink失敗的原因及解決方法

  unlink的原型在”io.h”中,其調用方法為unlink(filename,功能為刪除由filename指定的文件.一般調用方法如例1所示。

  例1.刪除某一目錄下符合給定條件的文件

    1 #include<dir.h>

    2 void main(int argc,char *argv[])

    3 {int done;

    4 strUCt ffblk f;

    5 if(argc?。?) exit(0);

    6 done=findfirst(argv[1],&f,0);

    7 if(!done)

    8 {if(f.ff_attrib?。?x10)

    9 {unlink(f.ff_name);

    10 while(!findnext(&f))

    11 {if(f.ff_attrib!=0x10)

    12 {unlink(f.ff_name);

    13 }}}

    14 else while(!findnext(&f))

    15 {if(f.ff_attrib?。?x10)

    16 {unlink(f.ff_name);

    17 }}}}

  本程序從語法上看是正確的,能夠調試通過并生成可執行文件,但只能刪除當前目錄下符合給定條件的文件,無法刪除指定目錄下的文件,原因就在于命令行給出的目錄路徑未能傳遞給unlink.解決方法為首先在第5行語句后插入如下語句,以獲得命令行給出的目錄路徑 :fnsplit(argv[1],drive,dir,name,ext);strcpy(path,drive);strcat(path,dir);

  然后使用如下兩種方法之一即可保證在命令行指定的目錄路徑下調用unlink:

  1.在第6行語句前面插入”chdir(path);”語句。

  2.用”strcpy(path1,path);strcat(path1,f.ff_name);unlink(path1);”代替例1中的”unlink(f.ff_name);”語句.

  此外,由于remove函數是通過調用宏unlink來實現的,故調用remove函數前也應如上所述的處理才能成功調用remove函數。

  二.memcpy函數的正確調用方法

  memcpy函數的一般調用方法為”memcpy(dest,src,n);”。其功能為把源串src中前n個字符拷貝到目的串dest中,因此目的串dest的最后長度應是n.當目的串為空或目的串原來的長度不大于n時,memcpy的結果是正確的,而當目的串原來的長度大于n時則調用memcpy函數后得到的結果是錯誤的,如例2所示。

  例2.編制memcpy函數演示程序

   ?。nclude<stdio.h>

   ?。nclude<mem.h>

   ?。nclude<string.h>

    void main(void)

   ?。鹖nt i;

    static char dest[7]=”First”;

    static char src[]=”Second”;

    PRintf(”\nTarget string 1 is :%s”,dest);

    memcpy(dest,src,3);

    printf(”\nTarget string 2 is :%s”,dest);

    memcpy(dest,src,strlen(src));

    printf(”\nTarget string 3 is :%s”,dest);

   ?。?br />
  本程序輸出結果應為:Target string 1 is:First

    Target string 2 is:Sec

    Target string 3 is:Second

  但實際輸出結果卻是:Target string 1 is:First


    Target string 2 is:Secst

    Target string 3 is:Second

  顯然,如此調用memcpy函數有時會得到錯誤的結果.若用如下語句代替”memcpy(dest,src,n);”語句,即可得到正確的結果。

    if(strlen(dest)>n)

   ?。鹒or(i=0;dest[i]!=’\0’;i++)

    dest[i]=’ ’;/*將dest賦空格*/

    dest[i]=’\0’;

    memcpy(dest,src,n);

   ?。?br />
    else memcpy(dest,src,n);

  當然,也可自編一memcpy函數以代替庫函數memcpy,由于篇幅所限,就不給出筆者自編的mcpy函數.與memcpy函數存在同樣問題的函數還有memmove函數,經過上述方法處理后亦可獲得正確結果。 更多文章 更多內容請看C/C++進階技術文檔專題,或 三.findfirst及findnext函數的正確調用方法

  為了在程序中實現文件或子目錄的搜索,顯示或刪除,C語言中一般是借助于findfirst及findnext庫函數來實現的.從雜志,報紙(如軟件報)發表的大部分該類應用程序來看,大部分是采用如例3第11-19行所示的調用方法。

  例3.編程要求與例1相同

    1 #include<dir.h>

    2 void main(int argc,char *argv[])

    3 {char path[MAXPATH],path1[MAXPATH];

    4 char drive[MAXDRIVE],dir[MAXDIR],name[MAXFILE],ext[MAXEXT];

    5 int done;

    6 struct ffblk f;

    7 if(argc?。?) exit(0);

    8 fnsplit(argv[1],drive,dir,name,ext);

    9 strcpy(path,drive);

    10 strcat(path,dir);

    11 done=findfirst(argv[1],&f,0);

    12 while(!done)

    13 {if(f.ff_attrib?。?x10)

    14 {strcpy(path1,path);

    15 strcat(path1,f.ff_name);

    16 unlink(path1);

    17 done=findnext(&f);

    18 }

    19 done=findnext(&f);

    20 }}

  本程序目的為刪除指定目錄下的文件,但實際執行結果卻是符合條件的全部文件的一半被刪除了,需要多次運行該程序才能把全部文件刪除??刹捎美?第7-16行所示的” ...if(!done)

 ?。?while(!findnext(&f))...”式的循環語句來解決這一問題。

  上述程序均在5X86/133,Borland C++ 2.0及Turbo C下調試通過。 更多文章 更多內容請看C/C++進階技術文檔專題,或

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美最顶级丰满的aⅴ艳星| 亚洲欧洲日本专区| 国产精品亚洲片夜色在线| 日韩美女av在线免费观看| 欧美老少配视频| 亚洲午夜激情免费视频| 91九色在线视频| 成人在线视频网| 久久精品视频在线| 麻豆国产va免费精品高清在线| 国内精品久久久久久久久| 欧美在线一区二区视频| 91免费国产视频| 91国产中文字幕| 欧美日韩亚洲天堂| 精品在线小视频| 欧洲中文字幕国产精品| 日本免费一区二区三区视频观看| 亚洲人高潮女人毛茸茸| 亚洲一区亚洲二区亚洲三区| 色悠久久久久综合先锋影音下载| 国产一区二区三区18| 欧美成人精品在线| 538国产精品视频一区二区| 性色av一区二区三区在线观看| 午夜精品久久久久久久99黑人| 亚洲深夜福利视频| 色视频www在线播放国产成人| 亚洲天堂成人在线视频| 久久91亚洲精品中文字幕| 亚洲电影免费观看高清完整版| 一区二区三区 在线观看视| 亚洲欧美国产日韩中文字幕| 亚洲黄页视频免费观看| 亚洲小视频在线观看| 国模私拍一区二区三区| 日韩欧美在线一区| 国产成人91久久精品| 国产精品夫妻激情| 国产91精品久久久| xxxxx91麻豆| 欧美成人精品一区二区| 亚洲人成网站777色婷婷| 欧美激情a∨在线视频播放| 热久久99这里有精品| 午夜精品国产精品大乳美女| 欧美精品电影免费在线观看| 日韩一中文字幕| 最近2019中文字幕大全第二页| 国产专区欧美专区| 欧美日韩精品在线视频| 少妇精69xxtheporn| 2019中文字幕在线免费观看| 久久久久久国产精品三级玉女聊斋| 8x海外华人永久免费日韩内陆视频| 在线日韩中文字幕| 国产情人节一区| 九九久久久久99精品| 久久99精品国产99久久6尤物| 欧美成人第一页| 欧美精品videosex性欧美| 精品露脸国产偷人在视频| 在线播放亚洲激情| 国产成人精品免费久久久久| 国产精品av在线播放| 深夜福利国产精品| 亚洲乱亚洲乱妇无码| 亚洲欧美福利视频| 亚洲深夜福利视频| 久久久久久亚洲| 国产日韩在线视频| 色综久久综合桃花网| 国产精品久久久久久亚洲调教| 欧美乱妇高清无乱码| 91精品国产综合久久久久久久久| 精品久久久久久久中文字幕| 欧美在线视频观看免费网站| 伊人久久精品视频| 成人午夜在线观看| 国产一区二区三区视频| 国产日韩欧美夫妻视频在线观看| 第一福利永久视频精品| 久久国产精品久久精品| 亚洲欧美制服综合另类| 国产精品视频区| 中文字幕日本精品| 日韩av手机在线| 亚洲精品国产精品久久清纯直播| 久久久久久网站| 国产精品一区二区电影| 国产精品入口免费视频一| 青青久久aⅴ北条麻妃| 1769国内精品视频在线播放| 国产成人精品电影久久久| 精品无人区太爽高潮在线播放| 午夜精品久久久久久久99热浪潮| 国产偷亚洲偷欧美偷精品| 欧美美女18p| 一区二区三区四区视频| 日韩在线观看网站| 97国产精品人人爽人人做| 欧美性xxxx极品高清hd直播| 国产丝袜精品第一页| 日韩专区在线播放| 91成人国产在线观看| 成人激情综合网| 91精品国产高清久久久久久91| 国产精品欧美久久久| 国产女人18毛片水18精品| 国产精品丝袜视频| 国产91在线视频| 亚洲国产精品va在线看黑人动漫| 久久亚洲精品网站| 日韩小视频在线| 国产精品免费一区| 人体精品一二三区| 中文字幕国产日韩| 日韩在线视频观看正片免费网站| 色777狠狠综合秋免鲁丝| 欧美激情女人20p| 7m精品福利视频导航| 欧美日产国产成人免费图片| 亚洲天堂免费观看| 97色在线视频观看| 国产不卡在线观看| 成人黄色av免费在线观看| 国产一区二区三区视频在线观看| 国产精品老牛影院在线观看| 中文字幕日韩欧美在线视频| 亚洲最大福利网| 日韩美女av在线| 国产欧美日韩专区发布| 欧美大片第1页| 久久精品一本久久99精品| 日韩欧美国产黄色| 久久精品国产精品亚洲| 亚洲图中文字幕| 亚洲天堂成人在线| 中文字幕亚洲欧美日韩在线不卡| 宅男66日本亚洲欧美视频| 日韩视频在线免费观看| 欧美成人sm免费视频| 亚洲男人的天堂在线| 精品久久久久久久久久ntr影视| 欧美激情xxxxx| 国产色视频一区| 日韩精品福利在线| 国产成人综合亚洲| 亚洲va国产va天堂va久久| 日韩一区二区三区国产| 亚洲最大福利视频网站| 欧美中文字幕在线观看| 中文字幕日韩免费视频| 国产精品一区二区在线| 久久天天躁狠狠躁夜夜爽蜜月| 亚洲天堂视频在线观看| 精品少妇v888av| 欧美一级成年大片在线观看| 中国日韩欧美久久久久久久久| 亚洲综合日韩在线| 精品国产一区二区三区在线观看| 欧洲精品在线视频| 中文字幕亚洲综合久久| 日韩电影免费观看中文字幕|