Как из массива значения перенести в строку

Тема в разделе "MS Visual C++", создана пользователем okwell5, 29 янв 2011.

  1. okwell5

    okwell5 Гость

    Объявил char *s;
    Объявил char mas[300];
    Далее я заполняю только певые 10 членов массива путем
    Код (C++):
    for(i=0;i<10;++i)
    {
    mas[i]='F';
    }

    Теперь сама суть вопроса: мне нужно чтобы только заполненные элементы вошли в строку s
    s=mas; //здесь строке присваивается весь массив, но мне нужны только заполненные элементы
    Пробовал и s=*mas, и *s=mas, и *s=*mas, но это все неправильно. Но уже не знаю, как отбросить ненужные элементы при присваивании.
     
  2. IrineK

    IrineK Гость

    Не забывай ставить "заглушку" на строку: '\0'


    #include <iostream>
    using namespace std;

    void main()
    {
    int i;
    char *s;
    char mas[300];
    for(i=0;i<10;++i)
    mas='F';
    mas='\0';
    s=mas;
    cout<<s<<endl;
    }


    Это работает правильно.
     
  3. dreamer

    dreamer Гость

    okwell5, у Вас терминология некорректная. И mas, и s будут иметь одинаковый тип данных, разве что mas сразу будет указывать на свободную область памяти размером 300 байт. И mas можно использовать для обычных операций с текстовой строкой. Только, как было замечено выше, нужно поставить завершающий "ноль" в конце.
     
  4. Rififi

    Rififi Гость

    okwell5

    s=mas; //здесь строке присваивается весь массив, но мне нужны только заполненные элементы

    никакой массив здесь не присваивается.
    указатель s получает значение равное адресу первого элемента массива.

    Но уже не знаю, как отбросить ненужные элементы при присваивании.

    отбрасывают копыта ((( а элементы массива - копируют.
    нужно выделить память под необходимое число символов и скопировать их (strcpy, strncpy)

    dreamer

    И mas, и s будут иметь одинаковый тип данных

    неправильно.
    mas имеет тип "массив из 300 элементов типа char", s - "указатель на char"
     
  5. dreamer

    dreamer Гость

    И то, и другое - указатель на один и тот же тип элементов. Или, может быть, Вы подразумеваете под типом данных что-то другое?
     
  6. okwell5

    okwell5 Гость



    Да, верно, проверил. Только в цикле должно быть mas[i+1]='\0'.
    Спасибо!
     
  7. dreamer

    dreamer Гость

    Во-первых, не в цикле, а после цикла, а во-вторых, не должно, т.к. после цикла i будет равен индексу пустого элемента.
     
  8. IrineK

    IrineK Гость

    Мой код вы проверили. Не мешало бы проверить свое "рациональное предложение" прежде, чем обнародовать его.
     
Загрузка...

Поделиться этой страницей