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

C++ 讀檔 加擷取文字

我有一個檔案位於C:\AttentionMeter20060426\attout.txt, 內容如下:

frame=19&wx=0&wy=0&attentionlevel=7&face=2&nodding=0&shaking=1&moving=1&mouthsOpen=0&x0=206&y0=130&width0=236&height0=236&face_attention0=0&face_age0=12&face_nodding0=0&face_shaking0=0&face_moving0=1&last_blink0=0&mouthOpen0=0&mouthSmile0=0&x1=379&y1=274&width1=179&height1=179&face_attention1=14&face_age1=10&face_nodding1=0&face_shaking1=1&face_moving1=1&last_blink1=0&mouthOpen1=0&mouthSmile1=0

我想要擷取文中 &y0=130&width0中 130 這個數值該怎麼作?

我想這樣寫一個判斷

此數值在&y0=後面; 再&width前面

我是建築系畢業, 因為急, 希望各位大大可以告訴我正確寫法

我再慢慢研究

(1)開檔獨字串

(2)辨認出要的參數存放

我已知的步驟, 謝謝

2 個解答

評分
  • 1 0 年前
    最佳解答

    打開檔案後一行行去讀然後使用Serch的方式去找出字串的位子然後加上偏移量接著讀出字串直到讀到要中斷的那個字尾

    #include <stdio.h>

    #include <stdlib.h>

    int serch(char s[],char d[]);

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

    {

    char str[1024];

    //FILE *fp;

    //fp=fopen("text1.txt","r");

    /*//讀檔

    while(fgetc(fp,str,sizeof(set))!=EOF)

    {

    //addr= serch(str,"&y0="); //算出目標位置

    //進行讀取跟計算

    }

    */

    system("PAUSE");

    return 0;

    }

    int serch(char s[],char d[])

    {

    int i,j;

    for(i=0; i<(strlen(s)-strlen(d)); i++)

    {

    if (s[i]==*d)

    for (j=1; j<strlen(d ); j++)

    if (s[i+j] != d[j]) break;

    if (j == strlen(d )) return i;

    }

    return -1;

    }

    不寫太多你自己慢慢思考

    2007-10-01 00:53:58 補充:

    你也可以先找出目標的起始位置A跟節尾B

    然後使用For迴圈從A讀到B

    那段就是你要的了

    2007-10-02 23:00:22 補充:

    // crt_strstr.c

    #include <string.h>

    #include <stdio.h>

    char str1[] = "jumps";

    char str2[] = "the";

    char string[] = "The quick brown dog jumps over the lazy fox";

    char fmt1[] = " 1 2 3 4 5";

    2007-10-02 23:00:35 補充:

    char fmt2[] = "12345678901234567890123456789012345678901234567890";

    int main( void )

    {

    char *pdest1,*pdest2;

    int result1, result2;

    printf( "String to be searched:\n %s\n", string );

    printf( " %s\n %s\n\n", fmt1, fmt2 );

    2007-10-02 23:00:43 補充:

    pdest1 = strstr( string, str1 );

    pdest2 = strstr( string, str2 );

    result1 = (int)(pdest1 - string + 1);

    result2 = (int)(pdest2 - string + 1);

    2007-10-02 23:00:47 補充:

    if ( pdest != NULL )

    printf( "%s found at position %d\n", str1, result );

    printf( "%s found at position %d\n", str2, result );

    else

    printf( "%s not found\n", str1 );

    printf( "%s not found\n", str2 );

    }

    2007-10-02 23:01:19 補充:

    這是從MSDN拿的

    http://msdn2.microsoft.com/en-us/library/z9da80kz(...

    參考資料: , 感謝Jacob大大提供
  • SiYu
    Lv 5
    1 0 年前

    跟URL 的網頁參數很相阿 .

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