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

Добавить 3 переменные в массив char без использования библиотеки string - C++

Восстановить пароль Регистрация
 
Beg
0 / 0 / 0
Регистрация: 29.03.2013
Сообщений: 17
18.04.2013, 13:06     Добавить 3 переменные в массив char без использования библиотеки string #1
задача такая:
есть 3 переменные, которые вводит пользователь адрес сервера, юзер, сообщение.
нужно запихнуть их в массив char без использования библиотеки string
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
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include "windows.h"
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{//   0  user 32       /server:41 localhost57 message200
        int i=0,j=16;
                char s1[15];
                char s2[32];
        char s3[135];
        char result[200];
        char space[2]=" ";
        for (i=0;i<201;i++)  result[i]=space[1];
        cout<<result<<endl;
        cout<<"vvedite adres terminalnogo servera\n";
        cin>>s1;
        cout<<"vvedite imya usera\n";
        cin>>s2;
        char s4[10]=" /server:";
        for (i=0;i<8;i++) result[i+32]=s4[i];
        cout<<s4;
        cout<<result;
        char s5[8]=" /v /w ";
        for (i=0;i<6;i++) result[i+58]=s5[i];
        for (i=0;i<33;i++) result[i]=s2[i];
        cout<<result<<endl;
        for (i=0;i<16;i++) result[i+41]=s1[i];
        cout<<result;
        cout<<"vvodite soobsheniya, dlya vihoda esc\n";
        for(;;)
        {
            cin>>s3;
            for (i=0;i<135;i++) result[i+66]=s3[i];
            cout<<result;
            ShellExecute(NULL, "open", (LPCSTR)"msg.exe", (LPCSTR)result, NULL, SW_SHOWNORMAL);
        }
        return 0;
}
с помощью вывода конечного массива в разных частях кода понимаю что ничего не получается, изначально присвоил всё " ", не помогло, не могу понять что я не так делаю.
на выходе result должен иметь вид
"s2 /server:s1 /v /w s3"
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.04.2013, 13:06     Добавить 3 переменные в массив char без использования библиотеки string
Посмотрите здесь:

Функция atoi, без использования библиотеки string C++
есть массив char. есть строка string. как присвоить значению string-a значение char-a? C++
Преобразование int и double в char без использования sprintf() C++
Задача со строками без использования библиотеки string.h C++
C++ создать функцию для работы с строковыми переменными без использования библиотеки <string.h>
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
stima
430 / 285 / 16
Регистрация: 22.03.2011
Сообщений: 929
Завершенные тесты: 1
18.04.2013, 13:48     Добавить 3 переменные в массив char без использования библиотеки string #2
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
#include <cstdio>
#include <cassert>
#include <Windows.h>
 
#define INITAL_LENGTH 42
 
struct string
  {
  char *buff;
  int length;
  int capacity;
  };
 
int init_string(string *str)
  {
  str->length = 0;
  str->capacity = INITAL_LENGTH;
  str->buff = (char*)malloc((str->capacity + 1) * sizeof(char));
 
  assert(str->buff);
  memset(str->buff, 0, str->capacity + 1);
 
  return str->buff != 0;
  }
 
int read_line(string *str)
  {
  str->length = 0;
  memset(str->buff, 0, str->capacity + 1);
 
  for (char c = 0; (c = getc(stdin)) != '\n'; ++str->length) //be careful with \r\n
    {
    if (str->length == str->capacity)
      {
      str->capacity *= 2; 
      str->buff = (char*)realloc(str->buff, (str->capacity + 1) * sizeof(char));
      assert(str->buff);
      }
 
    str->buff[str->length] = c;
    }
  str->buff[str->length] = '\0';
  
  //clear capacity
  str->buff = (char*)realloc(str->buff, (str->length + 1) * sizeof(char));
  str->capacity = str->length;
 
  return str->length;
  }
 
int main()
  {
  string server, user, msg;
  int was_readen = 0;
  
  printf("Enter server\n");
  init_string(&server);
  read_line(&server);
 
  printf("Enter user name\n");
  init_string(&user);
  read_line(&user);
 
  printf("Enter message\n");
  init_string(&msg);
  read_line(&msg);
 
  printf("server: %s user name: %s msg: %s\n", server.buff, user.buff, msg.buff);
  
  return 0;
  }
Beg
0 / 0 / 0
Регистрация: 29.03.2013
Сообщений: 17
18.04.2013, 18:38  [ТС]     Добавить 3 переменные в массив char без использования библиотеки string #3
C++
1
printf("server: %s user name: %s msg: %s\n", server.buff, user.buff, msg.buff);
нужна одна переменная, которая содержит готовый текст "username /server:serveradress /v /w message", где username serveradress message должен вводить пользователь, поскольку я собираюсь использовать эту переменную в ShellExecute.
stima
430 / 285 / 16
Регистрация: 22.03.2011
Сообщений: 929
Завершенные тесты: 1
18.04.2013, 19:21     Добавить 3 переменные в массив char без использования библиотеки string #4
Вы совсем лентяй? Сконкатенируйте строки.
Beg
0 / 0 / 0
Регистрация: 29.03.2013
Сообщений: 17
20.04.2013, 17:01  [ТС]     Добавить 3 переменные в массив char без использования библиотеки string #5
Цитата Сообщение от stima Посмотреть сообщение
Вы совсем лентяй? Сконкатенируйте строки.
Эта функция находится в библиотеке string- ее использовать нельзя, я уже писал.
stima
430 / 285 / 16
Регистрация: 22.03.2011
Сообщений: 929
Завершенные тесты: 1
20.04.2013, 17:52     Добавить 3 переменные в массив char без использования библиотеки string #6
Какая функция? Вы о чем? Вы можете сложить последовательно 3 массива?
Beg
0 / 0 / 0
Регистрация: 29.03.2013
Сообщений: 17
20.04.2013, 18:22  [ТС]     Добавить 3 переменные в массив char без использования библиотеки string #7
Цитата Сообщение от stima Посмотреть сообщение
Какая функция? Вы о чем? Вы можете сложить последовательно 3 массива?
Суть вопроса и есть в том, чтобы сложить массивы.
Не использовать библиотеку string, то есть функции типа strcat.
кроме 3 переменных есть еще текст
Вот куда я должен поместить Одну готовую переменную
C++
1
2
ShellExecute(NULL, "open", (LPCSTR)"msg.exe", (LPCSTR)result, NULL, SW_SHOWNORMAL);
ShellExecute(NULL, "open", (LPCSTR)"msg.exe", (LPCSTR)"console /server:localhost /v /w hello", NULL, SW_SHOWNORMAL);
Вместо console localhost hello должны быть переменные вводимые пользователем.
Вы же написали printf(1переменная, 2переменная, 3 переменная, 4 переменная).
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.04.2013, 19:16     Добавить 3 переменные в массив char без использования библиотеки string #8
Побыстрому, если правильно понял:
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
#include <iostream>
using namespace std;
 
int main()
{
    char result[200];
    char *res = result;
        
    cout<<"vvedite imya usera\n";
    while (cin.peek() != '\n')
    {
        cin.get(*res);
        ++res;
    }
    cin.get();
        
    char s4[10]=" /server:";
 
    for (int i = 0; i < 9; i++)
    {
            *res = s4[i];
            ++res;
    }
        
    cout<<"vvedite adres terminalnogo servera\n";
    while (cin.peek() != '\n')
    {
        cin.get(*res);
        ++res;
    }
    cin.get();
        
    char s5[8]=" /v /w ";
    for (int i = 0; i < 7; i++)
    {
            *res = s5[i];
            ++res;
    }
        
    cout<<"vvodite soobsheniya, dlya vihoda esc\n";
    while (cin.peek() != '\n')
    {
        cin.get(*res);
        ++res;
    }
    cin.get();
    *res = '\0';
 
    cout << result << endl;
 
    system("pause");
    return 0;
}
Миниатюры
Добавить 3 переменные в массив char без использования библиотеки string  
stima
430 / 285 / 16
Регистрация: 22.03.2011
Сообщений: 929
Завершенные тесты: 1
20.04.2013, 19:34     Добавить 3 переменные в массив char без использования библиотеки string #9
Цитата Сообщение от Beg Посмотреть сообщение
Вы же написали printf(1переменная, 2переменная, 3 переменная, 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
25
26
27
28
29
30
31
32
33
34
35
36
#include <cstdlib>
#include <cstdio>
 
int strlen(char* str)
{
    int ret = 0;
    for ( ; str[ret] != '\0'; ++ret);
    
    return ret;
}
 
char *strcat(char* str1, char* str2)
    {
    int str1_l = strlen(str1);
    int str1_l = strlen(str2);
 
    char *ret = (char*)malloc((str1_l + str2_l + 1) * sizeof(char));
    
    int i = 0;
    for (int j = 0; j < str1_l; ++j, ++i)
        ret[i] = str1[j];
    for (int j = 0; j < str2_l; ++j, ++i)
        ret[i] = str2[j];
    ret[i] = '\0';
 
    return ret;
    }
 
int main()
{
    char* hello = strcat("Hello", " world!");
    printf("%s", hello);
        free(hello);
 
    return 0;
}
Добавлено через 5 минут
Цитата Сообщение от alsav22 Посмотреть сообщение
Побыстрому, если правильно понял:
Мое сообщение 3к символов, что делать?)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.04.2013, 17:08     Добавить 3 переменные в массив char без использования библиотеки string
Еще ссылки по теме:

C++ Разделить символьный массив на подмассивы без использования методов String
Задача без использования типа string C++
Как сделать замену слова в строке без использования функций библиотеки string? C++

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

Или воспользуйтесь поиском по форуму:
Beg
0 / 0 / 0
Регистрация: 29.03.2013
Сообщений: 17
24.04.2013, 17:08  [ТС]     Добавить 3 переменные в массив char без использования библиотеки string #10
появился еще один вопрос, думал смогу сам-не получилось
как менять результат?
result="s1 server:s2 /v /w s3"
я ввел s3, использовал result, ввожу заново s3, в result меняется s3, используется result.
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
    int main()
{
    int j=0;
    char over[200];
    char result[200];
    char *ov=over;
    char *res = result;
    char s1[5]="msg ";
    for (int i = 0; i < 4; i++)
        {
            *res = s1[i];
            ++res;
        }   
    cout<<"vvedite imya usera\n";
    while (cin.peek() != '\n')
    {
        cin.get(*res);
        ++res;
    }
    cin.get();     
    char s2[10]=" /server:";
    for (int i = 0; i < 9; i++)
    {
            *res = s2[i];
            ++res;
    }   
    cout<<"vvedite adres terminalnogo servera\n";
    while (cin.peek() != '\n')
    {
        cin.get(*res);
        ++res;
    }
    cin.get(); 
    char s3[8]=" /v /w ";
    for (int i = 0; i < 7; i++)
    {
            *res = s3[i];
            ++res;
    } 
    cout<<"vvodite soobsheniya, dlya vihoda esc\n";
    while (cin.peek() != '\n')
    {
       j++;
       cin.get(*ov);
       ++ov;
    }
    cout<<*ov<<endl;
    for (;j=0;j--)
    {
        --ov;
        *res=*ov;
        ++res;      
    }
 
    cin.get();
    *res = '\0';
    cout<<result;
    system("pause");
    return 0;
}
Yandex
Объявления
24.04.2013, 17:08     Добавить 3 переменные в массив char без использования библиотеки string
Ответ Создать тему
Опции темы

Текущее время: 19:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru