藍森林首頁 | 返回主頁 | 本站地圖 | 站內搜索 | 聯繫信箱 |
 您目前的位置:首頁 > 自由軟件 > 技術交流 > 應用編程


    

藍森林 http://www.lslnet.com 2006年6月6日 10:18


加急件!!字符處理 問題 !!!!thanks!

用proc從數據庫取出一個字段值放在char sRecord[2001];
我需要把結果附值到srec中,
因為字段不一定是2001這麼長,所以有可能有只10個字符,後面就都是空格,所以我把空格符號去掉
char sRecord[2001];
........
  j=2001;
   while(sRecord[j]='\0' || sRecord[j]<=32)   
      { j=j-1;
        if (j<0) break;}    〈-- j 的值就是字符串的長度
/*然後我把j長度的字符從sRecord中取出,附給sRec*/
memcpy(sRec,sRecord[2001],j);

但是我最後結果fputs到文本中,並沒有把字符串長度完全取出,總少一位,而且還有不知名符號!WHY?

加急件!!字符處理 問題 !!!!thanks!

memcpy(sRec,sRecord[2001],j+1);

加急件!!字符處理 問題 !!!!thanks!

char sRecord[2001];    /* 0 - 2000 */
........
j=2000;
while(sRecord[j]='\0' || sRecord[j]<=32)
{ j--;
if (j<0) break;} 〈-- j 的值就是字符串的長度
/*然後我把j長度的字符從sRecord中取出,附給sRec*/
memcpy(sRec,sRecord[2001],j+1);

加急件!!字符處理 問題 !!!!thanks!

前幾天不是有個去掉空格的帖子?

加急件!!字符處理 問題 !!!!thanks!

在Pro C中,這樣就可以了
[code]
VARCHAR tmp[2001];
EXEC SQL SELECT SOME_CHAR
                     INTO :tmp
                     FROM SOME_TAB;
tmp.arr[tmp.len] = '\0';
strcpy(sRecord,(char *)tmp.arr);
[/code]

加急件!!字符處理 問題 !!!!thanks!

在proc中我INTO的那個字段是varchar型的,
按你上面的也行麼?
請問,strcpy(sRecord,(char *)tmp.arr);中的sRecord的類型定義為哪種??是char sRecord[2000] 麼?

VARCHAR tmp[2001];
EXEC SQL SELECT SOME_CHAR
                     INTO :tmp
                     FROM SOME_TAB;
tmp.arr[tmp.len] = '\0';
strcpy(sRecord,(char *)tmp.arr);

加急件!!字符處理 問題 !!!!thanks!

搞定了,呵呵,好簡單
    j=strlen(sRecord);
    while(sRecord[j]=='\0' || sRecord[j]<=32)
      {
        j=j-1;
        if (j<0) break;
      }
    sRecord[j]='\0';   
    fputs(sRecord,fp);
    fputs("\n",fp);

加急件!!字符處理 問題 !!!!thanks!

sRecord 是 char
[code]
char        sRecord[2001];
VARCHAR tmp[2001];
EXEC SQL SELECT SOME_CHAR
                     INTO :tmp
                     FROM SOME_TAB;
tmp.arr[tmp.len] = '\0';
strcpy(sRecord,(char *)tmp.arr);
[/code]

加急件!!字符處理 問題 !!!!thanks!

memcpy(sRec,sRecord[2001],j-1);

加急件!!字符處理 問題 !!!!thanks!

加急件!!字符處理 問題 !!!!thanks!

加急件!!字符處理 問題 !!!!thanks!

VARCHAR tmp[100];
當select後,tmp.arr記錄字符串,tmp.len記錄該字符串的長度。
注意,這時tmp.arr不是以'\0'(NULL)結尾的,是無法用strcpy的。
所以tmp.arr[tmp.len] = '\0';

加急件!!字符處理 問題 !!!!thanks!

-->     

  J結構一樣適合內存的操作,是不會出錯的了!!!

加急件!!字符處理 問題 !!!!thanks!

運行當然不會錯。
但前j-1個字節就一定是我們要的那個字符串嗎?

加急件!!字符處理 問題 !!!!thanks!

sure!



Copyright © 1999-2000 LSLNET.COM. All rights reserved. 藍森林網站 版權所有。 E-mail : webmaster@lslnet.com