Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 30.11.2018
Сообщений: 1
1

Strcmp

30.11.2018, 14:18. Показов 2343. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток! Возникла проблема: стоит задача создать массив структур (3 структуры) и набор функций. Пользователи телефонной сети. Поля: ФИО, тип соединения, номер телефона и адрес владельца. Одна из функций - поиск абонента по номеру с последующим выводом всех потрохов на экран. Желательно использовать функцию strcmp. Но при попытке воткнуть её в программу появляется ошибка: "Необработанное исключение по адресу 0x0082EF18 (ucrtbased.dll) в Laba6.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xCC003635." Как это исправить?


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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <math.h>
struct tel
{
    char data[30];
    char num[11];
    char soed[30];
    char adr[30];
};
struct ms
{
    char y[30];
};
struct tel zap(struct tel P[3]);
void out(struct tel P[3]);
void sh(char *u, struct tel P[3]);
void ps(struct ms T[1], struct tel P[3]);
int main()
{
    struct tel P[3];
    struct ms T[1];
    char г, c, *u, f = 0;
    int b;
    zap(P);
    out(P);
    printf("Vvedite num of tel: ");
    scanf("%s", &u);
    getchar();
    sh(u,P);
    printf("Vvedite type soed: ");
    gets_s(T[0].y);
    ps(T, P);
    _getch();
}
struct tel zap(struct tel P[3])
{
    int i;
    for (i = 0; i < 3; i++)
    {
        printf("User N%d:\n", i + 1);
        printf("Vvedite FIO %d: ", i + 1);
        gets_s(P[i].data);
        printf("Vvedite type soed %d: ", i + 1);
        gets_s(P[i].soed);
        printf("Vvedite number of tel %d: ", i + 1);
        gets_s(P[i].num);
        printf("Vvedite adress %d: ", i + 1);
        gets_s(P[i].adr);
        printf("\n");
    }
    return *P;
}
void out(struct tel P[3])
{
    int i;
    for (i = 0; i < 3; i++)
    {
        printf("User N%d: \n", i + 1);
        printf("FIO N%d: ", i + 1);
        puts(P[i].data);
        printf("\n");
        printf("Soed N%d: ", i + 1);
        puts(P[i].soed);
        printf("\n");
        printf("Number of tel N%d: ", i + 1);
        puts(P[i].num);
        printf("\n");
        printf("Adress N%d: ", i + 1);
        puts(P[i].adr);
        printf("\n");
    }
}
void sh(char *u,struct tel P[3])
{
    for (int i=0;i<3;i++)
    if (strcmp(u,P[i].num)==0)
    {
        printf("Sovpadenie:\n");
        printf("\n");
        printf("FIO N%d", i + 1);
        puts(P[i].data);
        printf("\n");
        printf("Soed N%d: ", i + 1);
        puts(P[i].soed);
        printf("\n");
        printf("Adress N%d: ", i + 1);
        puts(P[i].adr);
        printf("\n");
        printf("Number of tel N%d: ", i + 1);
        puts(P[i].num);
        printf("\n");
    }
}
void ps(struct ms T[1], struct tel P[3])
{
    int e = 0;
    for (int i = 0; i < 3; i++)
        if (strcmp(T[0].y, P[i].soed) == 0)
        {
            e = e + 1;
        }
    printf("Colichestvo: %d", e);
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.11.2018, 14:18
Ответы с готовыми решениями:

strcmp
подскажите плз как работает ф-ция strcmp. например вот тут: strcmp(poisk-&gt;name,name) ...

Функция strcmp
Если я, правильно понимаю, то функция strcmp сравнивает 2 строки лексикографически. Но почему-то...

Не выходит из цикла с strcmp в условии
Доброе время суток! Есть два массива char. Одно случайно заполняется цифрами, другие вводит...

Аналог strcmp: лексикографическое сравнение
Подскажите пожалуйста, как мы сами можем написать аналог такой функции?

2
Эксперт CЭксперт С++
5118 / 4558 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
30.11.2018, 14:50 2
Яку, как минимум, измените в main()
C
1
char *u;
на
C
1
char u[32];
0
Вездепух
Эксперт CЭксперт С++
12783 / 6662 / 1793
Регистрация: 18.10.2014
Сообщений: 16,849
01.12.2018, 10:19 3
Цитата Сообщение от Яку Посмотреть сообщение
Но при попытке воткнуть её в программу появляется ошибка
Ым.... Ошибка у вас появится на ваше грубо некорректное

C
1
scanf("%s", &u);
К strcmp этот никакого отношения не имеет.

Если у вас при формате %s в аргументе стоит & - это почти всегда ошибка.

И что такое

C
1
char г
?
0
01.12.2018, 10:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.12.2018, 10:19
Помогаю со студенческими работами здесь

Функция strcmp. Как использовать
И снова здравствуйте! (С Новым Годом и прошедшим Рождеством всех) В описаниях написано, что данная...

Ошибка сравнения строк strcmp()
Проблема состоит в том, что в цикле while не происходит корректное сравнение строк. По задумке,...

Не пойму как работет strcmp();
Ввод текста в stdin, нахождение максимального слова, его длина и позиция первой буквы его. Тут все...

Написать аналог функций strcat и strcmp
Помогите пожалуйста написать аналог функций strcat и strcmp на Си


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

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