运行后,我得到一个弹出窗口屏幕,说“prg.exe已停止工作”。

时间:2018-01-12 15:03:06

标签: c++ codeblocks

#include <iostream>
#include <stdio.h>
#include <string.h>

using namespace std;
int main()
{
  char str[100];
  cout << "Enter a string : ";
  gets(str);
  cout << "The words containing y in their last place are : ";
  cout << "\n";
  for(int i = 0; str[i] != '\0'; i++)
  {
    int j = i + 1;
    if((str[i] == 'y') && (str[j] == ' '))
    {
      int k;
      cout << 134;
      char stress[50];
      int m = 0;
      k = i;
      for(; (str[k] != ' ') || (k != 0); k--, m++)
      {
        stress[m] = str[k];
      }
      stress[m] = '\0';
      int g;
      for(g = 0; stress[g] != '\0'; g++)
        ;
      char strain[g];
      for(int n = 0, q = k - 1; q >= 0; n++, q--)
      {
        strain[n] = stress[q];
      }
      strain[g] = '\0';
      for(int p = 0; p < g; p++)
      {
        cout << strain[p];
      }

      cout << "\n";
      cout << 1;
    }
    cout << 12;
  }

  return 0;
}

这个c ++程序将显示包含'y'的单词作为其最后一个字母。我用cout&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; 12&lt;&lt;&lt; 1等...来了解程序的哪个部分正在工 不要因为看到紧张和压力而感到困惑。它们只是字符串。 我在Windows 7中使用代码块

运行程序后,我弹出一个窗口,显示“prg.exe已停止工作”。 请有人告诉我为什么会出现这个错误。 我使用的是代码块 我将非常感激。

1 个答案:

答案 0 :(得分:0)

由于使用gets()功能,您可能会遇到错误,因为当您使用gets()时,您需要知道您将获得的字符数量。它在2011年被标准删除,但几乎每个C实现都使用它。所以为了避免这种危险的功能你可以使用:

  • getline(),非常易于使用 - 就像那样:

    getline(cin,str);

  • fgets(),它的使用方式与gets类似,但您需要提及您将阅读的字符数:

    fgets(str, num_of_chars, cin);