2012-08-26 108 views
1

在我的第一個編程作業的一個工作,一個文本莫爾斯(和背面)轉換器,但由於某種原因,當我介紹一款文本的文字之間的空間我的程序去進入無盡的循環並崩潰。有任何想法嗎?對不起,如果這個描述很糟糕,仍然讓我的頭腦在編程語言。的莫爾斯電碼轉換器獲取字符串長度不斷循環

這是一塊,程序的不正常:

{ 

     string user_input; 
     cout << "----------------------------------------" <<endl 
     << "Text to Morse Mode" << endl 
     << "Enter text for conversion : "<<endl; 
     cin >> user_input; 
     cout << endl << endl << user_input << " converts to : "; 
     unsigned int str_lenght; 
     str_lenght=user_input.size(); 
     cout << endl; 

     for (i=0;i<str_lenght;i++) 
     { 

      find_string=0; 

      while (find_string < stop_string) 
      { 


       if (user_input[i]==text[find_string][0]) 
       { 
        count=1; 
        cout << morse[find_string] << " "; 
        break; 


       } 

       find_string = find_string+1; 
      } 

     } 

     cout << endl << endl << endl; 

     if (count==0) 
      cout << endl << " an error was encountered " << "\a" << endl ; 
    } 
+2

所以有您可以使用兩種方法,你應該學會兩個:(1)「的printf調試」是指outputing在你的程序中各點的變量的值,然後運行它,看看哪些變量有什麼價值了時間。 (2)「使用調試器」使用一種稱爲將在沙盒中運行您的程序,讓你在不同點停止它,你可以檢查任何你想要的變量調試程序手段。如果您告訴我們您使用的是什麼平臺,我們可以告訴您使用的最常見的調試器。 –

回答

0

stop_string不是從我所看到的任何地方所定義。爲了通過增加打破循環,你需要定義stop_string。此外find_string = find_string+1;可以縮短爲find_string++

0

首先,你必須在任何地方定義stop_string變量。首先定義它或使用另一個變量。如果它是字符串長度意圖在這裏使用,請使用您創建的str_length。 其次,如果你想輸入空格,你的話之間,使用函數getline來代替CIN。 cin劃定空格字符。