作者 主題: 請幫看程式--去掉引號及空白字元  (閱讀 4567 次)

0 會員 與 1 訪客 正在閱讀本文。

mptl

  • 懷疑的國中生
  • **
  • 文章數: 31
    • 檢視個人資料
請幫看程式--去掉引號及空白字元
« 於: 2006-03-03 11:46 »
以下子程式:  可去引號 但不能去空白  , 要如何做??
int cut_HTSPchar(char *str)
{
    char  tmp[256]={0};
    int   p;

   memmove(tmp, str+1, strlen(str)-2);
                memset(str, 0, strlen(str));
                memmove(str, tmp, strlen(tmp));

   for(p=0 ; p<<strlen(tmp) ; p++)
   {
      
      char c;
      c=*(str+p);
      if(isspace(c))
      {

      memset(str+p, NULL, 1);
                                 }
      
   }
    return 0;
}

螢火飛

  • 酷!學園 學長們
  • 活潑的大學生
  • ***
  • 文章數: 400
    • 檢視個人資料
    • http://firefly.idv.tw
請幫看程式--去掉引號及空白字元
« 回覆 #1 於: 2006-03-07 20:33 »
看不出來這個程式哪裡可以去引號而不可以去空白?
從頭到尾整個看不懂?
如果我是老師,這個程式完全不及格。

您不止濫用指標,還濫用 '<<' 位移,我就不知道 for 迴圈用 '<<' 要幹嘛?

mptl

  • 懷疑的國中生
  • **
  • 文章數: 31
    • 檢視個人資料
修正~~~~
« 回覆 #2 於: 2006-03-08 09:30 »
:oops:

抱歉!!
經修正如下, 以解決了!!!
int Cut_HTchar(char *str)
{
    char  tmp[256]={0} , tmp1[256]={0};
   int   p=0, t=0 ;

   memmove(tmp, str+1, strlen(str)-2);             

   for(p=0 ; p<256 && tmp[p] ; ++p)
   {  
      if(!isspace(tmp[p]))                         {
         tmp1[t]=tmp[p];
          t++;
      }
      else
         if( p-1>=0 && tmp[p-1]>127 )
           {
             tmp1[t]=tmp[p];
              t++;
         }
     
   }
    memset(str, 0, strlen(str));
    memmove(str , tmp1 , strlen(tmp1));
    return 0;
}


只是有沒有中文字元的二碼中有用到ascii code 是20 的中文字
好想測試一下....

洋蔥叔叔

  • 區域板主
  • 鑽研的研究生
  • *****
  • 文章數: 830
    • 檢視個人資料
    • 洋蔥叔叔的隨意漫談電腦、網路、.NET、軟體本地化、雜七雜八
請幫看程式--去掉引號及空白字元
« 回覆 #3 於: 2006-03-08 09:49 »
引用

只是有沒有中文字元的二碼中有用到ascii code 是20 的中文字
好想測試一下....

沒有, Big5 是 7bit-safe

學飛的小鳥

  • 活潑的大學生
  • ***
  • 文章數: 349
    • 檢視個人資料
請幫看程式--去掉引號及空白字元
« 回覆 #4 於: 2006-03-08 09:55 »
big-5 low byte 由 0x40 開始, high byte 0x80 開始