Прекращена работа программы .exe в Code::Blocks
Добавлено: 19 сен 2010, 18:06
Здравствуйте. Начал штудировать книгу Кергигана и Ричи по Си, дошел до массива символов, и столкнулся с не очень обычной для меня проблемой. Дело в том, что код, приведенный к качестве примера в книге, компилируется нормально, выдает черное окошко, можно даже ввести строчку. Но после нажатия enter Windows 7 выбрасывает служебное окно «Прекращена работа программы 5.exe, Windows может провести поиск способа устранения этой ошибки в интернете и бла-бла-бла."
Привожу код:
Дело в компиляторе? Использую Code::blocks и MinGW.
Привожу код:
Код: Выделить всё
//считывает набор строк и выводит самую длинную из них
#include <stdio.h>
#define MAXLINE 1000
int getline(char line[], int);
void copy(char to[], char from[]);
//вывод самой длинной строки в потоке
main()
{
int len; //длина текущей строки
int max; //текущая максимальная длина
char line[MAXLINE]; //текущая введенная строка
char longest[MAXLINE]; //самая длинная строка из введенных
max = 0;
while ((len = getline(line, MAXLINE)) > 0)
if (len > max)
{
max = len;
copy(longest, line);
}
if (max > 0) //была непустая строчка
printf("%s", longest);
return 0;
}
//считывает строку в s, возвращает ее длину
int getline(char s[], int lim)
{
int c, i;
for (i = 0; i < lim - 1 && (c = getchar()) != EOF && c != '\n'; ++i) //если строка от 1 до 1000 символов, не содержит
s[i] = c; //конца файла или новой строки, записать i-й символ
//в i-й элемент массива s[]
if (c == '\n') //как только ловим конец строки, записывает этот символ в последний i, полученный в цикле for
{
s[i] = c;
++i; //окончательное значение количества символов в строке
}
s[i] = '\0'; //сообщаем о конце строки
return i;
}
//копирует из одной строки в другую
void copy (char to[], char from[])
{
int i;
while ((to[i] = from[i]) != '\0')
++i;
}