ㄚ修 發問時間: 電腦與網際網路程式設計 · 1 0 年前

用C語言讀檔案問題

請問假設檔案裡有某一行

name : Tom

...........

我要用C將Tom存起來

有啥方法比較有效率呢?????

已更新項目:

我的檔案可能是

skhafoahfoa

name:Tom

flajlfjaljfoial

這樣喔

也就是說不是固定讀幾個字元的

2 個已更新項目:

請問

strcpy(name,fgets(buffer,_MAX_ENV,f)+5);

不是只是copy字串嗎?

程式並沒有搜尋的功能阿???

我只是要在"Name:"後面的字元喔!!!!

3 個已更新項目:

謝謝你的回答^^

可是有可能有其他冒號的存在呢!!!

有沒有哪個函數可以辨別判斷抹一字串後面的字串嗎??

1 個解答

評分
  • 1 0 年前
    最佳解答

    我的做法可能不算是有效率的,只能算是解決字串問題的一種方式。

    當檔案內容為:

    name:Tom

    //Power by Visual Studio 2005

    #include<stdio.h>

    #include<stdlib.h>

    #include<string.h>

    #define _MAX_ENV 32767 //定義緩衝區最大值

    int main(int argc, char* argv[]){

    //==========START==========//

    FILE *f;

    char *fn="e:\\123.txt",buffer[_MAX_ENV];

    char name[_MAX_ENV];

    f=fopen(fn,"r");

    if(f!=NULL){

    while(!feof(f)){

    strcpy(name,fgets(buffer,_MAX_ENV,f)+5);

    printf("%s\n",name);

    }

    fclose(f);

    }

    //==========END==========//

    printf("\n"),system("PAUSE");

    return 0;

    }

    2007-07-06 11:05:38 補充:

    假如是存多個個人資料的話,應該會有固定的循環,過了固定幾行又會有相同的讀取方式。

    2007-07-07 15:43:13 補充:

    也可以改寫成…

    fgets(buffer,_MAX_ENV,f);

    strcpy(name,(buffer+(int)(strchr(buffer,':')-buffer)+1));

    找到冒號後面的字串,把字串複製到 name 陣列內,再顯示出來。

    2007-07-08 22:03:55 補充:

    char *strtok( char *strToken, const char *strDelimit );

    strtok 要利用 while 迴圈逐步取得字串。

    不過判斷字串後面的字串,最後還是要自行寫判斷式和利用字串函式,C 語言的函式不像 VB 有多個方便的函式功能。

還有問題?馬上發問,尋求解答。