Мне сложно понять эту ошибку времени выполнения в моем коде. Это было задание для моего класса, которое, как я думал, будет легким, но что-то странное продолжается. Я разместил свой код ниже.
Подсказка для этого назначения заключалась в создании программы, которая просит пользователя ввести несколько слов, а затем она должна вывести, сколько слов есть. У меня был друг, запускавший программу, и она работала, однако всякий раз, когда я пытаюсь ее запустить, я получаю эту ошибку времени выполнения. [http://imgur.com/FcdN3zK]
Имейте в виду, что я новичок в C ++ и программировании в целом, поэтому я не смогу понять очень технические ответы. Спасибо заранее за вашу помощь.
#include <string>
#include <iostream>
#include <cstring>
using namespace std;
int wordCounter(char *);
int main()
{
char *stringArray = nullptr;
stringArray = new char[120];
cout << "Please enter a saying or a phrase that has more than one word: " << endl;
cin.getline(stringArray, 120);
int words = wordCounter(stringArray);
cout << "Your statement contains " << words << " words." << endl;
system("pause");
return 0;
}
int wordCounter(char *stringTest)
{
char characterToTest;
int numberOfWords = 0;
for (int i=0; i < 120; i++)
{
characterToTest = *(stringTest + i);
if (isspace(characterToTest) && i != 120)
{
char characterToTestTemp = *(stringTest + (i + 1));
if (isalnum(characterToTestTemp))
{
numberOfWords++;
}
}
}
return numberOfWords;
}
nullptr
наNULL
(я использую более старую версию, поэтому нетnullptr
), и моя программа скомпилирована без каких-либо проблем, но количество слов неверное.Если я введу 3 слова, на выходе будет 2 слова, и если я введу 20 слов, на выходе будет 19 слов. - person Arun A S   schedule 14.02.2015nullptr
. Мой компилятор - gcc 4.8.0 (Devc ++), поэтому я изменилnullptr
наNULL
, и программа скомпилировала и выдала результат (хотя количество слов всегда казалось на 1 меньше, чем число, которое я ввел). Пожалуйста, объясните, что вы имели в виду (у меня не было неопределенного поведения). - person Arun A S   schedule 14.02.2015