Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ramses
-2 / 0 / 0
Регистрация: 24.04.2011
Сообщений: 55
#1

Почему зацикливается? - C++

11.06.2011, 16:42. Просмотров 711. Ответов 3
Метки нет (Все метки)

Такая программка:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <conio.h>
#include <iostream>
#include <windows.h>
 
using namespace std;
 
void strCon(char *str1, char *str2, int len= -1) {
    if(len== -1) len = strlen(str2);
    while(*str1)
        str1++;
    while(*str2 && len) {
        *str1 = *str2;
        str1++;
        str2++;
        len--;
    }
    *str1 = '\0';
}
 
int _tmain() {
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
        
    char string[] = {"Америка"};
    char tooString[] = {"-Европа"};
    
    strCon(string, tooString, 5);
    cout << string;
    
    _getch();
    
    return 0;
}
Всё нормально компилится, запускаю, выводит строку, к которой добавлены 5 символов из второй строки и при нажатии Enter винда выводит три окошка, что-де обнаружена ошибка в программе и она будет закрыта (обычно она просто закрывается при нажатии сей клавиши). Если совсем убрать из исходника _getch(), то вывод зациклится, а затем будут выведены всё те же три окошка; если же поместить _getch() после return, то вывод просто зациклится. Не пойму, где ошибка..
Использую Borland Free Compiler 5.5.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.06.2011, 16:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Почему зацикливается? (C++):

Почему зацикливается??? - C++
Доброе время суток. Прошу объяснить или дать ссылку где такое описывается. #include &lt;iostream&gt; using namespace std; int main(){ ...

Программа зацикливается. Почему? - C++
Когда заполняю матрицу с клавиатуры - работает нормально. Когда заполняю случайными числами она зацикливается. #include &lt;iostream&gt; ...

Почему зацикливается программа? - C++
Нужно найти сумму элементов матрицы 4x4 на побочной диагонали. Если поразмышлять, любой элемент побочной диагонали удовлетворяет уравнению...

Почему зацикливается код? (найти причины возникновения ошибок в коде) - C++
почему зацикливается? #include &lt;iostream&gt; #include &lt;time.h&gt; #include &lt;windows.h&gt; using namespace std; int main() { ...

Почему программа себя странно ведет: зацикливается после ввода значений? - C++
Зацикливается после воода значений. Подскажите пожалуйста в чем может быть проблема. #include &lt;fstream&gt; #include &lt;iostream&gt; ...

Добрый день!(а точнее вечер) Немогли бы объяснить почему зацикливается программа? - C++
Вычислить и вывести на экран в виде таблицы значения функции F на интервале от Хнач. до Хкон. с шагом dX. F= a*x*x +b*x +c(при a&lt;0 и с...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
11.06.2011, 17:01 #2
Цитата Сообщение от ramses Посмотреть сообщение
char string[] = {"Америка"};
при таком написании, это все равно что оглалисть переменную типа char string[8] - статический массив, а в strCon вы пытаетесь его увеличить
ramses
-2 / 0 / 0
Регистрация: 24.04.2011
Сообщений: 55
11.06.2011, 17:20  [ТС] #3
Блин, точно. Спасибо.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
11.06.2011, 17:38 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
 
void strCon(char *str1, char *str2, int len= -1)
{
    if(len == -1) 
        len = strlen(str2);
    str1 += strlen(str1); 
    for(unsigned i = 0; str2[i] && i < len; i++)
        str1[i] = str2[i];
    str1[i] = '\0';
}
 
int main()
{
    std::locale::global(std::locale(""));
                
    char string[20] = "Америка";
    char tooString[] = "-Европа";
        
    strCon(string, tooString, 5);
    std::cout << string;
    std::cin.get();
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.06.2011, 17:38
Привет! Вот еще темы с ответами:

Цикл "зацикливается", неизвестно почему - C++
Программа представляет собой демонстрацию движений двух &quot;йо-йо&quot; (катушечных маятников, маятников Максвелла - называйте как хотите) вот...

программа зацикливается - C++
помогите скажите пожалуйста почему моя программа зацикливается #include&lt;stdio.h&gt; #include&lt;conio.h&gt; #include&lt;math.h&gt; ...

Программа зацикливается - C++
Программа зацикливается после ввода размеров массива. Подскажите пожалуйста, где ошибка. #include &lt;iostream&gt; void inn(int **, int,...

Зацикливается стек - C++
Реализация простой базы данных на базе класса стек (на основе связанного списка). Зацикливается на вводе фамилии. головной: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.06.2011, 17:38
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru