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

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

Войти
Регистрация
Восстановить пароль
 
akaelwins
1 / 1 / 2
Регистрация: 11.04.2012
Сообщений: 17
#1

Строки в стиле C - C++

05.12.2012, 22:57. Просмотров 396. Ответов 4
Метки нет (Все метки)

Добрый вечер, решил поковыряться со строками в стиле C и наткнулся на следующую проблему.
В 13-й строке компилятор ругается на то, что str1 - не l-значение, не пойму почему.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <cstring>
#include <cstddef>
using namespace std;
 
int main() {
    char str1[] = "The first string literal";
    char str2[] = "The second one";
    const size_t copy_size = 5;
    strncpy(str1, str2, copy_size);
    while (*str1) {
        cout << *str1;
        ++str1;
    }
    cout << endl;
    if (strcmp(str1, str2) > 0)
        cout << "The first char array is bigeer" << endl;
    if (strcmp(str1, str2) < 0)
        cout << "The second char array is bigeer" << endl;
    if (strcmp(str1, str2) == 0)
        cout << "Arrays are equal" << endl;
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.12.2012, 22:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Строки в стиле C (C++):

Строки в стиле C - C++
Начал изучать C++, столкнулся с проблемой. Пользователь вводит строку, нужно вывести все возможные комбинации слов из введенной...

Строки в стиле С - C++
Здравствуйте, задумался над одной штукой: можно ли просто написать char* s = &quot;stirng&quot;; или же нужно const char* s = &quot;string&quot;; я...

Реверс строки в стиле Си - C++
Подскажите как написать собственную функцию реверса строки в стиле СИ?

строки в стиле С - cstdlib - C++
Добрый вечер) Изучаю функции, связанные со строками. Конкретно по функциям, содержащимся в заголовке &lt;cstdlib&gt; Библиотеку С++ смотрю вот...

Строки в стиле C. Часть 2 - C++
Еще раз спасибо, что помогли разобраться с вводом и чтением строк в стиле C. Появился иной вопрос - есть массив со строками в стиле C,...

Строки в стиле Си. Замена символов - C++
Дана строка символов. Преобразовать данную строку, удалив из нее каждую пару символов ‘&lt;&lt;’ и повторив (вставив еще раз) каждую пару...

4
Croessmah
Эксперт CЭксперт С++
13416 / 7569 / 855
Регистрация: 27.09.2012
Сообщений: 18,632
Записей в блоге: 3
Завершенные тесты: 1
05.12.2012, 23:04 #2
str1 - это имя массива - константное значение
0
David Sylva
1287 / 949 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
05.12.2012, 23:09 #3
Согласен Croessmah str1 константное значение, вот почитай статью, так как раз описано очень интересно
http://www.cyberforum.ru/blogs/18334/blog97.html
1
akaelwins
1 / 1 / 2
Регистрация: 11.04.2012
Сообщений: 17
05.12.2012, 23:11  [ТС] #4
А имя массива разве не является указателем на его первый элемент? Ведь в функции
C++
1
strncpy(str1, str2, copy_size);
в качестве аргументов выступают как раз указатели на первые элементы соответствующих массивов.
0
Croessmah
Эксперт CЭксперт С++
13416 / 7569 / 855
Регистрация: 27.09.2012
Сообщений: 18,632
Записей в блоге: 3
Завершенные тесты: 1
05.12.2012, 23:12 #5
Цитата Сообщение от akaelwins Посмотреть сообщение
А имя массива разве не является указателем на его первый элемент?
Является, но менять его нельзя.

можно сделать так:
C++
1
2
3
4
5
     char * p=str1;
    while (*p) {
        cout << *p;
        ++p;
    }
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.12.2012, 23:12
Привет! Вот еще темы с ответами:

Динамическое выделение памяти под строки в стиле Си - C++
В программе пользователь вводит строку неизвестного заранее размера. Ее нужно передать в функцию для работы с ней. Как это оформить на c++?...

Инициализация поля класса (строки в стиле Си): найти причину возникновения ошибки и исправить эту ошибку - C++
Начинаю учить C++ и хочу сделать что-то типо &quot;игры&quot; в текстовом варианте. Вот столкнулся с проблемой - хранение бонусов при ответе,...

Напишите программу, присваивающую значения элементов списка указателей на символьные строки в стиле С (тип char* ) элементам вектора строк - C++
Напишите программу, присваивающую значения элементов списка указателей на символьные строки в стиле С (тип char* ) элементам вектора строк...

Объяснить различия в работе указателей на целое число и указателей на const char (строки в стиле Си) - C++
Уважаемые программисты, возникло несколько вопросов касательно указателей. Почему при выводе указателя на int нужна звёздочка (*), а...


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

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

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