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

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

Войти
Регистрация
Восстановить пароль
 
 
fishec
121 / 121 / 31
Регистрация: 07.09.2013
Сообщений: 343
#1

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

18.09.2013, 14:47. Просмотров 586. Ответов 18
Метки нет (Все метки)

Есть переменная
char S[10];
В нее что-то записали.
Как проверить что S!="." и S!=".."
bool result;
в result записать true, если S!="." и S!=".."
То есть если строка - символ точка . , или две точки .. то result=false.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.09.2013, 14:47
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Сравнение строки (C++):

Сравнение символов из строки - C++
getline(cin, Text); for (i = 1; i <= Text.length(); i++) { 16: if ((Text == " ") && (Text == " ")) { 18: ...

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

Сравнение строки с несколькими значениями - C++
#include "stdafx.h" #include <iostream> #include <windows.h> #include <string> using namespace std; int main() ...

строки, перегруженные функции, сравнение... - C++
Здравствуйте! Есть перегруженная функция: Block* BlocksList::Find(string text) const { BlockNode * pNode = 0; int...

Строки в С++....сравнение слов не получется... - C++
Прога для решения задачи: С клавиатуры вводятся две строки, содержащие некоторые слова. Слова перечислены через запятую. Исключить из...

Сравнение элементов строки с символами из текстового файла - C++
В текстовик в столбик записаны заглавные и строчные буквы английского языка, обозначения операций мат. логики (логика высказываний). Смысл...

18
Fyret
200 / 186 / 20
Регистрация: 30.07.2013
Сообщений: 392
18.09.2013, 14:50 #2
При условии, что это "что-то" заканчивается нулем:

C++
1
bool result = strcmp(S, ".") && strcmp(S, "..");
1
Croessmah
Ушел
13777 / 8027 / 926
Регистрация: 27.09.2012
Сообщений: 19,782
Записей в блоге: 3
Завершенные тесты: 1
18.09.2013, 14:51 #3
strcmp
1
fishec
121 / 121 / 31
Регистрация: 07.09.2013
Сообщений: 343
18.09.2013, 14:53  [ТС] #4
спасибо!
0
ValeryS
18.09.2013, 14:56
  #5

Не по теме:

Цитата Сообщение от fishec Посмотреть сообщение
Как проверить что S!="." и S!=".."
директории ищем

0
fishec
121 / 121 / 31
Регистрация: 07.09.2013
Сообщений: 343
18.09.2013, 15:09  [ТС] #6
Цитата Сообщение от ValeryS Посмотреть сообщение
директории ищем
ага))))

Добавлено через 6 минут
Еще вопрос:
Есть строка в которой что-то лежит.
char *d;
И еще одна:
char s[10];
Нужно сделать строку
char *out
в которой должно быть d + \ + s
Пример: d - "123"
s - "abs"
out должно быть 123\abc
И нельзя портить ни d ни s.
0
alsav22
5437 / 4832 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.09.2013, 15:23 #7
strcat().
0
SatanaXIII
Супер-модератор
Эксперт С++
5693 / 2748 / 258
Регистрация: 01.11.2011
Сообщений: 6,710
Завершенные тесты: 1
18.09.2013, 15:25 #8
C
1
2
3
4
5
6
7
8
char *d = "123";
char s[10] = "abs";
char *out;
 
out = d;
strcat(out, "\\");
strcat(out, s);
printf(out);
1
Croessmah
Ушел
13777 / 8027 / 926
Регистрация: 27.09.2012
Сообщений: 19,782
Записей в блоге: 3
Завершенные тесты: 1
18.09.2013, 15:26 #9
SatanaXIII, хотите записать в строковый литерал?
0
SatanaXIII
Супер-модератор
Эксперт С++
5693 / 2748 / 258
Регистрация: 01.11.2011
Сообщений: 6,710
Завершенные тесты: 1
18.09.2013, 16:40 #10
Croessmah, не могли бы вы пояснить более подробно мою ошибку?
0
User409368
191 / 168 / 7
Регистрация: 09.09.2013
Сообщений: 524
18.09.2013, 16:51 #11
Цитата Сообщение от SatanaXIII Посмотреть сообщение
не могли бы вы пояснить более подробно мою ошибку?
out - это указатель на char и ему присваивается адрес указателя d
А d указывает на константную строку:

эти две строки эквивалентны:
C++
1
char *d = "123";
C++
1
const char *d = "123";
Добавлено через 48 секунд
будет ошибка во время выполнения программы
0
alsav22
5437 / 4832 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.09.2013, 17:24 #12
C++
1
2
3
4
5
6
7
8
char *d = "abs";
char s[10] = "123";
char *out;
 
out = s;
strcat(out, "\\");
strcat(out, d);
printf(out);
1
Croessmah
Ушел
13777 / 8027 / 926
Регистрация: 27.09.2012
Сообщений: 19,782
Записей в блоге: 3
Завершенные тесты: 1
18.09.2013, 18:48 #13
alsav22, всё равно не то:
Цитата Сообщение от fishec Посмотреть сообщение
И нельзя портить ни d ни s.
тут динамическую память лучше использовать.

да и даже если портить можно, то получилось бы
s\d, а не d\s
0
alsav22
5437 / 4832 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.09.2013, 19:47 #14
Цитата Сообщение от Croessmah Посмотреть сообщение
alsav22, всё равно не то:
Согласен, но я на задание и не смотрел, просто исправил явные ошибки кода SatanaXIII, и чтобы получилось "123\abc".
0
SatanaXIII
Супер-модератор
Эксперт С++
5693 / 2748 / 258
Регистрация: 01.11.2011
Сообщений: 6,710
Завершенные тесты: 1
19.09.2013, 12:42 #15
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
int main (void)
{
char *d = "123";
char s[10] = "abs";
char *out;
                        // [0] [1] [2] [3]
out = d;                // '1' '2' '3' '\0'
 
                        //  [3]
printf("%s\n",&out[3]); // '\0'                   // "123\0"
 
strcat(out, "\\");
                        //  [3] [4]
printf("%s\n",&out[3]); // '\\' '\0'              // "123\\0"
 
strcat(out, s);
                        //  [3] [4] [5] [6] [7]
printf("%s\n",&out[3]); // '\\' 'a' 'b' 'c' '\0'  // "123\abc\0"
 
printf("%d\n", strlen(out) );  // 7
 
getch();
return 0;
}
Цитата Сообщение от _ Посмотреть сообщение
out - это указатель на char и ему присваивается адрес указателя d
А d указывает на константную строку
C
1
2
3
4
5
6
7
char *d = "123";
char *out;
 
out = d;
 
cout << &d << endl; // 1200064
cout << &out;       // 1200060
Цитата Сообщение от _ Посмотреть сообщение
будет ошибка во время выполнения программы
У Evg в блоге есть маленькая приписка (5.2), что подобные ситуации борландовский компилятор кушает и не давится, а gcc спотыкается. Поэтому хотелось бы вызвать еще и его самого, чтобы пояснил на пальцах этот маленький пример.

alsav22, есть конкретное условие:
C++
1
2
3
char *d = "123";
char s[10] = "abs";
char *out;
и необходимо в out собрать "123\abc", не трогая при этом ни d, ни s. Если вас не затруднит, покажите как это правильно реализовать.
1
19.09.2013, 12:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.09.2013, 12:42
Привет! Вот еще темы с ответами:

Сравнение строки в структуре с переменной типа char - C++
Есть некая функция Х которая возвращает кол-во строк структуры Poezda a, строка a.StNazn в которой равна введеному с клавиатуры c и создает...

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

Произвести сравнение введенной строки, со строками текстового файла - C++
Здравствуйте , столкнулся с одной проблемой. Нужно произвести сравнение введенной строки, со строками текстового файла . Вот мой код (прошу...

Преобразовать заданные строки, согласно условию (сортировка и сравнение строк, вставка/удаление символов) - C++
Даны строки A и B. Если все символы A входят в B и в B есть повторяющиеся символы, то упорядочить символы B в порядке, обратном к...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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