126 / 125 / 62
Регистрация: 07.09.2013
Сообщений: 343
1

Сравнение строки

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

Author24 — интернет-сервис помощи студентам
Есть переменная
char S[10];
В нее что-то записали.
Как проверить что S!="." и S!=".."
bool result;
в result записать true, если S!="." и S!=".."
То есть если строка - символ точка . , или две точки .. то result=false.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.09.2013, 14:47
Ответы с готовыми решениями:

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

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

Не работает сравнение строки
Подскажите в чем дело? #include <iostream> #include <cstring> using namespace std; int...

Сравнение строки и символа
string slovar = "абвгдеежзийклмнопрстуфхцчшщэюя"; char guess; while (true) { cout <<...

18
249 / 219 / 63
Регистрация: 30.07.2013
Сообщений: 465
18.09.2013, 14:50 2
При условии, что это "что-то" заканчивается нулем:

C++
1
bool result = strcmp(S, ".") && strcmp(S, "..");
1
Неэпический
17869 / 10634 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
18.09.2013, 14:51 3
strcmp
1
126 / 125 / 62
Регистрация: 07.09.2013
Сообщений: 343
18.09.2013, 14:53  [ТС] 4
спасибо!
0
ValeryS
18.09.2013, 14:56
  #5

Не по теме:

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

0
126 / 125 / 62
Регистрация: 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
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
18.09.2013, 15:23 7
strcat().
0
Почетный модератор
Эксперт С++
5850 / 2861 / 392
Регистрация: 01.11.2011
Сообщений: 6,907
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
Неэпический
17869 / 10634 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
18.09.2013, 15:26 9
SatanaXIII, хотите записать в строковый литерал?
0
Почетный модератор
Эксперт С++
5850 / 2861 / 392
Регистрация: 01.11.2011
Сообщений: 6,907
18.09.2013, 16:40 10
Croessmah, не могли бы вы пояснить более подробно мою ошибку?
0
193 / 170 / 32
Регистрация: 09.09.2013
Сообщений: 522
18.09.2013, 16:51 11
Цитата Сообщение от SatanaXIII Посмотреть сообщение
не могли бы вы пояснить более подробно мою ошибку?
out - это указатель на char и ему присваивается адрес указателя d
А d указывает на константную строку:

эти две строки эквивалентны:
C++
1
char *d = "123";
C++
1
const char *d = "123";
Добавлено через 48 секунд
будет ошибка во время выполнения программы
0
5498 / 4893 / 831
Регистрация: 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
Неэпический
17869 / 10634 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
18.09.2013, 18:48 13
alsav22, всё равно не то:
Цитата Сообщение от fishec Посмотреть сообщение
И нельзя портить ни d ни s.
тут динамическую память лучше использовать.

да и даже если портить можно, то получилось бы
s\d, а не d\s
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
18.09.2013, 19:47 14
Цитата Сообщение от Croessmah Посмотреть сообщение
alsav22, всё равно не то:
Согласен, но я на задание и не смотрел, просто исправил явные ошибки кода SatanaXIII, и чтобы получилось "123\abc".
0
Почетный модератор
Эксперт С++
5850 / 2861 / 392
Регистрация: 01.11.2011
Сообщений: 6,907
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
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
19.09.2013, 12:49 16
Цитата Сообщение от SatanaXIII Посмотреть сообщение
alsav22, есть конкретное условие:
Цитата Сообщение от SatanaXIII Посмотреть сообщение
и необходимо в out собрать "123\abc", не трогая при этом ни d, ни s. Если вас не затруднит, покажите как это правильно реализовать.
Думаю, что можно реализовать, но, извините, неинтересно.
1
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
19.09.2013, 13:14 17
Не пойму, в чём сложность? Или что? Croessmah написал уже:
Цитата Сообщение от Croessmah Посмотреть сообщение
тут динамическую память лучше использовать.
Так, например:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
char *d = "123";
    char s[10] = "abs";
    char *out = new char[8];
    // или так
    //char arr[8];
    //out = arr;
    
    strcpy(out, d);
    strcat(out, "\\");
    strcat(out, s);
 
    std::cout << out << std::endl
              << d << std::endl 
              << s << std::endl;
 
    delete [] out;
Миниатюры
Сравнение строки  
1
Почетный модератор
Эксперт С++
5850 / 2861 / 392
Регистрация: 01.11.2011
Сообщений: 6,907
19.09.2013, 13:31 18
То есть статическими методами никак?
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
19.09.2013, 13:45 19
Цитата Сообщение от SatanaXIII Посмотреть сообщение
То есть статическими методами никак?
Вот же:
Цитата Сообщение от alsav22 Посмотреть сообщение
// или так
//char arr[8];
//out = arr;
Только delete, в конце, тогда не нужен.
Ну, то есть так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    char *d = "123";
    char s[10] = "abs";
    char *out;
    
    char arr[8];
    out = arr;
    
    strcpy(out, d);
    strcat(out, "\\");
    strcat(out, s);
 
    std::cout << out << std::endl
              << d << std::endl 
              << s << std::endl;
2
19.09.2013, 13:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.09.2013, 13:45
Помогаю со студенческими работами здесь

Сравнение строки с символом
Всем привет! В файле формата TGF нужно найти номер строки, в которой находится символ '#' (он...

Сравнение строки с элементами списка
У меня есть список в роли базы данных. Мне нужно узнать есть ли товар, который запрашивает...

Сравнение строки с несколькими значениями
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;windows.h&gt; #include &lt;string&gt; using...

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru