![]() |
Строки, массивы строк...
Каким образом в С работать со строками? (не массивами из символов)
Там вроде есть какой-то ньюанс, в отличие от Java, эти конструкции не очень-то работают: Код:
String name = "********"; |
Цитата:
Если в C++, то подключаем заголовочный #include <string> и работаем. Код:
#include <iostream> |
Ясно, спасибо... как тогда будет выглядеть объявление массива из массивов из символов в Cи? :)
А каким образом можно сравнивать массивы из символов? (аналогично String.compareTo() в Java) |
Цитата:
Код:
char str_array[100][1024]; //сто строк длиной 1024 Цитата:
Код:
if(strcmp("str1", "str1") == 0) printf("Одинаковые"); |
что понимается под массивом из String? в c/с++ нет класса String. Строки в С, а по наследству и в С++ представляются массивом сз элементов типа char или wchar_t, но в стандартной библиотеке C++, в пространстве имён std есть класс string, который удовлетворяет большинство потребностей в строках. Можно придумать свой класс String, работающий по собственным правилам (например это сделал borland, объявив классы AnsiString и WideString), но это излишне, если допускается использование std::string.
Теперь о массиве. Вообще конструкция Код:
#include <string> Цитата:
Код:
// случайный доступ к элементам Для сравнения строк переопределён оператор==(string const&, string const&), для сравнения контейнеров то же самое сделано для контейнеров. То есть: Код:
clog << (str_arr1==str_arr2 ? "Векторы равны" : "Есть различия") << endl; Управление хранилищем полностью отводится на откуп прогаммиста. Поэтому надо заранее позаботиться о выделении и уничтожении памяти. Класса String в C нет. Вместо этого есть массив из char, в конце которого символ с кодом 0. Для сравнения строк функции strcmp, strcmpi или любая самописная, которая сравнивает поэлементно до тех пор, пока не встретит код 0. Сравнение массивов только самописное или не из стандартной библиотеки C. |
Здравствуйте!
Скажите пожалуйста как на обычном Си реализовать такое В соревнованиях по прыжкам в длину принимают участие 10 спортсменов. Считая заданным список фамилий спортсменов и их результаты в порядке стартовых номеров, получить итоговую таблицу, в которой содержатся фамилии и результаты в порядке занятых мест. не пойму как массивы строку работают, вылезает ошибка Null pointer assignment либо просто закрывается окно Код:
#include <stdio.h> #include <iostream.h> #include <iomanip.h> #include <string.h> |
Цитата:
Код:
// в коде программы В С нет объекта "строка" - есть "массив символов, оканчивающийся нулём" (символом с кодом "ноль"), который компилятором и отладчиком обрабатывается особым образом, создавая over 9000 проблем любому начинающему программисту. У меня сейчас нет времени полноценную лекцию по данной теме писать, ибо она слишком большая и сложная. Придётся послать вас в гугль :( |
Время: 16:38. |
Время: 16:38.
© OSzone.net 2001-