2013-05-20 168 views
-1

我嘗試在按鈕函數中調用HuffmanTree1.CreateHfmTree(char Str,int m,int n);。運行時給我錯誤C2143:語法錯誤:缺少「;」 (在「。」前面)錯誤C2143:語法錯誤:缺少「;」 (在「。」前面)

它的語法翻譯錯誤:缺少「;」(在的前面「」)

我的代碼如下:

void CHuffmanTreeDlg::OnBnClickedButton1() 
{  // TODO: 在此添加控件通知處理程序代碼 
    UpdateData(TRUE); 
    if (m_radio1=1) 
    { 
     char*pszFileName="C:\C++\HuffmanTree\HuffmanTree\WData.txt"; 
     CStdioFile myFile; 
     CFileException fileException; 
     if(myFile.Open(pszFileName,CFile::modeCreate|CFile::typeText|CFile::modeReadWrite),&fileException) 
     { AfxMessageBox("打開成功"); 
     myFile.SeekToBegin(); 
     CString str1; 
     myFile.ReadString(str1); 
     CString str2; 
     AfxMessageBox(str1+str2); 
     ifstream ifs("WData.txt"); 
     ofstream ofs("WCode.txt"); 
     char str[1000]; 
     char Str[100]; 
     int i=0,j,m[100],h,k=0; 
     int n=0; 
     char ch; 
     while(ifs.get(ch)) 
     { 
      if(ch!='\n') 
      {str[n++]=ch;} 
      for(i=0;i<n;i++) 
      { 
       j=0;h=0; 
       while(str[i]!=str[j]) 
        j++; 
       if(j==i) 
       { 
        Str[k]=str[i]; 

       } 
       else 
        continue; 
       for(j=i;j<n;j++) 
       { 
        if(str[i]==str[j]) 
         h++; 
       }  
       m[k]=h; 
       k++; 
      } 
      HuffmanTree1.CreateHfmTree(char Str,int m,int n); 
      cin.get(); 

      m_length=n; 
      m_string1="報文的編碼已經保存在WCode.txt"; 
      UpdateData(FALSE); 
     } 
     } 
     else 
     { 
      TRACE("Can't open file%s,error=%u\n",pszFileName,fileException.m_cause); 
     } 
     myFile.Close(); 
    } 
} 

感謝您的幫助:d

+0

是我還是缺少主要功能?或者在某處添加額外的大括號。 – chris

+0

你在字符串常量中的使用\應該被轉義或者只是使用/來代替。雖然這不是錯誤。 – drescherjm

+0

如何突出顯示錯誤所在的行? – John3136

回答

3

這條線:

HuffmanTree1.CreateHfmTree(char Str,int m,int n); 

很奇怪。它或多或少是一個函數聲明,但缺少返回類型。它不是對函數的調用;你不會列出類型。如果您正在嘗試調用某個函數,請刪除char和兩個int,然後重命名其他參數。我沒有看到代碼可以使用的類變量HuffmanTree1 - 這使得它成爲一個全局變量,或者以其他方式定義的此類函數。你確定這是很好的界面設計嗎?將值傳遞給參數中的函數通常比使用「全局」變量更好。

1

你是試圖調用函數,還是聲明它?無論哪種方式,除非你有一個名爲HuffmanTree1的變量,該變量引用具有此成員函數的類,否則在函數名稱中有一段時間是無效的。

相關問題