Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 20.11.2013
Сообщений: 99
1

Сравнить первые десять символов двух строк

30.03.2014, 12:06. Показов 1576. Ответов 3
Метки нет (Все метки)

Ввести строки. Сравнить первые десять символов двух строк. Если они одинаковы, объединить две строки, исключив из второй первые десять символов. В случае отличия первых десяти символов скопировать вторую строку в первую. Посчитать длину исходной и полученной первой строки.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.03.2014, 12:06
Ответы с готовыми решениями:

Сравнить первые 5 символов двух заданных строк
Сравнить первые 5 символов двух заданных строк. с помощью функции strncmp (). Результат сравнения...

Функция пропускает первые n символов из строки str и формирует из оставшихся символов строку result
2. Написать функцию обработки строк: в качестве аргументов передаются в том числе строки, где конец...

Загрузить в TextBox первые десять строк из файла
Здравствуйте. В проекте есть есть файл T.txt и форма с textBox1. Требуется: Создать массив...

Если строки одинаковы, объединить две строки, исключив из второй первые десять символов
Ввести строки. Сравнить первые десять символов двух строк. Если они одинаковы, объединить две...

3
54 / 54 / 47
Регистрация: 16.03.2014
Сообщений: 110
Записей в блоге: 2
30.03.2014, 13:32 2
Для сравнения первых 10 символов потребуется стандартная функция strncmp.
Функция strncmp
C
1
2
#include <string.h>
int strncmp(const char *str1, const char *str2, size_t count);
Функция strncmp() сравнивает в лексикографическом порядке не более count символов из двух строк, заканчивающихся символом конца строки, и возвращает целое значение, зависящее от результата сравнения следующим образом:
ЗначениеРезультат сравнения
Меньше нуляstr1 меньше str2
Нульstr1 равен str2
Больше нуляstr1 больше str2
Если в какой-нибудь из заданных строк меньше count символов, сравнение заканчивается при обнаружении первого нулевого символа.
Далее ->если первые десять символов равны, тогда
C
1
2
3
4
5
6
7
8
9
10
11
12
13
    int len_1 = strlen(str1); // длина первой строки
    int len_summ = len_1 + (strlen(str2) - 10) + 1; // суммарная длина всей строки
 
    // выделяем память для новой строки
    char tmp_str = (char *)malloc(sizeof(char) * len_summ);
 
    // копируем первую в новую
    strcpy(tmp_str, str1);
    // добавляем вторую строку к новой без учета первых 10-и символов
    strcat(tmp_str, str2 + 10);
    
    free(str1);
    str1 = tmp_str;
в противном случае
C
1
2
3
4
5
6
7
8
9
10
11
    int len_1 = strlen(str1); // длина первой строки
    int len_2 = strlen(str2) + 1; // суммарная длина всей строки
 
    // выделяем память для новой строки
    char tmp_str = (char *)malloc(sizeof(char) * len_summ);
 
    // копируем вторую в новую
    strcpy(tmp_str, str2);
    
    free(str1);
    str1 = tmp_str;
Длинна полученной строки равн либо len_summ либо len_2 за вычетом единицы.
0
429 / 383 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
30.03.2014, 13:33 3
Я не могу понять, а в чем может быть проблема? Все это стандартные вещи. Просто бери и делай, ровно так, как ты и написал. Ты же фактически уже написал алгоритм. Или ты не знаешь названия функций? Вот они:

strncmp - сравнить первые символы двух строк.
strcat - объединение строк.
strlen - длина строки.
0
Заблокирован
30.03.2014, 13:59 4
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <stdio.h>
#include <string.h>
#include <locale.h>
 
 
int main()
{   setlocale (LC_CTYPE, "Russian");
    char a[200], b[200], rest[200];
    char c1[11], c2[11];
    
    printf ("Рядок 1: ");
    fgets (a, 200, stdin);
    if (a[strlen(a) - 1] == '\n')
        a[strlen(a) - 1] = '\0';
    printf ("Рядок 2: ");
    fgets (b, 200, stdin);
    if (b[strlen(a) - 1] == '\n')
        b[strlen(a) - 1] = '\0';
 
    strncpy(c1, a, 10);
    strncpy(c2, b, 10);
    c1[10] = c2[10] = '\0';
 
    printf ("\nДовжина першого рядка до перетворень:\t, %d", strlen(a));
 
    if (strcmp(c1, c2) == 0)
    {   printf( "\nПерш1 десять символ1в сп1впадають. Коп1юємо решту другого рядка в перший\n");
        memcpy (rest, b+10, strlen(b)-9);
        strcat(a, rest);
    }
    else
    {   printf ( "\nПерш1 десять символ1в не сп1впадають. Коп1юємо весь другий рядок в перший\n");
        strcat(a,b);
    }
    
    printf( "\nРядок 1: %s",a);
    printf( "\nДовжина першого рядка п1сля перетворень:\t %d", strlen(a));
 
    getchar();
    return 0;
}
Защиту от маленьких строк (меньше 10 символов) поставила.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.03.2014, 13:59

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Как сравнить первые 3 символа std::wstring строк ? :-)
Есть две строки: 1. &quot;ПРЕВЕД&quot; 2. &quot;ПРОВОД&quot; Хочу узнать, совпадают ли у них первые три символа...

Получить из данных строк S1 и S2 новую строку, содержащую первые N1 символов S1 и последние N2 символов S2
Даны целые положительные числа N1 и N2 и строки S1 и S2. Получить из этих строк новую строку,...

Как сравнить первые столбцы двух книг Экселя и выявить разницу?
Добрый день, уважаемые! Прошу вашей помощи в следующей задаче: есть 2 файла в одной папке:Old.xls...

Даны целые положительные числа N1 и N2 и строки S1 и S2. Получить из строк новую строку, содерж. первые N1 символов строки S1 и последние N2 символов
Даны целые положительные числа N1 и N2 и строки S1 и S2. Получить из этих строк новую строку,...


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

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

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