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

Конкатенация строк - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Создание библиотек DLL http://www.cyberforum.ru/cpp-beginners/thread643212.html
Пишу в Dev-C++. Хочу создать DLL - библиотеку. Помогите разобраться в последовательность написания библиотеки DLL.
C++ Статическая линковка: несовместимые параметры командной строки "/clr:pure" и "/MTd" Я залинковал так: Проект-Свойства-Свойства конфигурации-Общие-Использование MFC - Поставил на ст. Теперь не компилируется: 1>cl : командная строка error D8016: несовместимые параметры командной строки "/clr:pure" и "/MTd" Добавлено через 54 секунды там "/clr: pure... :):):) http://www.cyberforum.ru/cpp-beginners/thread643208.html
C++ Сколько раз слово встречается в предложении
Здравствуйте уважаемые программисты. Помогите решить задачу или хотя бы намётки дайте. "Для каждого из слов заданного предложения указать, сколько раз оно встречается в предложении."
C++ Как узнать пространство имен?
Здравствуйте, возникла ситуация, при которой нужно явно указать, к какому пространству имен относится функция Ellipse. Я только начал изучать winapi, и возникла ситуация, что мой подключенный класс носит такое же имя - Ellipse. Гуглил инфу, подставлял и gdi:: и gdiplus:: и другие ругательства, угадать не получилось. Я понимаю, что такую ситуацию можно избежать, но хотелось бы узнать, как...
C++ Ввести строку s, найти и вывести слова заканчивающиеся подстрокой s2 http://www.cyberforum.ru/cpp-beginners/thread643175.html
прошу вас сделать без использования библиотек, просто с использованием цикла и условий, поиск юзал ничего того, что одобрит преподаватель не нашел
C++ сортировка по никнайму #include <iostream> #include <iomanip> using namespace std; int intCmpReverse(const void * pa, const void *pb) { const int* a = reinterpret_cast<const int*>(pa); const int* b = reinterpret_cast<const int*>(pb); return -(*a - *b); подробнее

Показать сообщение отдельно
bgm313
12 / 12 / 2
Регистрация: 27.07.2012
Сообщений: 208
27.08.2012, 22:41     Конкатенация строк
Частью задания является реализовать функцию strcat. Возникает какая-то ошибка (см.фото).
1.Вы могли бы подсказать в чём ошибка?
2.Не по теме: как можно улучшить функцию read?

Вот код:

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
//read
char *Read(void){
    size_t size = 32;   //первоначальный размер строки
    size_t i = 0;       //индекс элемента строки
    int ch;             
    
    //выделим память для строки
    char *result = (char *)malloc(size);
    if(!result){
        cout << "Ошибка выделения памяти.\n";
        system("pause");
        exit(1);
    }
 
    //очистим стандартный поток ввода
    fflush(stdin);
    
    //считываем строку
    for(;;){
        ch = getchar(); 
        
        //если встретился пробел, то выходим из цикла
        if(isspace(ch)) break;
    
        //если длина строки превышает максимальный размер, то вернём нулевой указатель
        if(i == MAX_SIZE_STR - 1){
            cout << "Максимальная длина строки: " << MAX_SIZE_STR - 1 << '\n';
            return NULL;
        }
        //перевыделим память для, если это потребуется
        else if(i == size - 2){
            size *= 2;
            result = (char *)realloc(result,size);
            if(!result){
                cout << "Ошибка выделения памяти.\n";
                system("pause");
                exit(1);
            }
        }
        
        //запишем 1 символ из потока в строку
        result[i++] = ch;
    }
 
    //поставим завершающий нуль
    result[i] = '\0';
    
    if(ch!='\n') {
        cout << "Cтрока не должна содержать пробелов.\n";
        return NULL;
    }else if(Length(result) == 0) {
        cout << "Длина строку должна быть больше нуля.\n";
        return NULL;
    }
 
    return result;
}
//my strcat
char * Concat(const char *str,const char *str2){
    int i = 0;
    int n = Length(str);
    char *result;
 
    result = (char *)malloc(n + Length(str2) + 1);
    if(!result){
        cout << "Ошибка выделения памяти.\n";
        system("pause");
        exit(1);
    }
    
    while(result[i] = str[i]) i++;
    i = 0;
    while(result[n++] = str2[i++]);
    
    result[n] = 0;
    return result;
 
//main
void main(void){
    char ch;
    char *str, *str2, *result;
 
    setlocale(LC_ALL,"Rus");
 
    for(;;){
        system("cls");
 
        //выбор операции над строками
        ch = SelectOp();
        putchar('\n');
 
        if(ch == '0') break;
        
        do{
            cout << "Введите строку 1: ";
            str = Read();
        }while(!str);
        
        switch(ch){
case'2':
            do{
                cout << "Введите строку 2: ";
                str2 = Read();
            }while(!str2);
            
            putchar('\n');
 
            result = Concat(str,str2);
            
            cout << "строка 1: " << str << '\n';
            cout << "строка 2: " << str2 << '\n';
            cout << "сумма строк Concat: " << result << '\n';
            cout << "сумма строк strcat: " << strcat(str,str2) << '\n'; 
            
            free(str);
            free(str2);
            free(result);
            break;
            }
}
Миниатюры
Конкатенация строк  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 05:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru