2012-08-26 100 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划定空格字符。