Форум программистов, компьютерный форум CyberForum.ru

Указатели. - C++

Восстановить пароль Регистрация
 
Джамиля
0 / 0 / 0
Регистрация: 26.01.2010
Сообщений: 8
26.01.2010, 16:16     Указатели. #1
Написать функцию, которая сравнивает одну строку с n символами другой строки (int strncmp(char *s1, char *s2, int n).
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.01.2010, 16:16     Указатели.
Посмотрите здесь:

Указатели C++
указатели C++
Указатели C++
указатели C++
C++ Указатели в С++.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Кирюха
 Аватар для Кирюха
32 / 30 / 2
Регистрация: 10.11.2009
Сообщений: 123
26.01.2010, 17:23     Указатели. #2
Цитата Сообщение от Джамиля Посмотреть сообщение
Написать функцию, которая сравнивает одну строку с n символами другой строки (int strncmp(char *s1, char *s2, int n).
C++
1
2
3
4
5
6
7
8
9
  int strncmp(register char *s1, register char *s2, register int n)
  {
      if(s1 == s2)
          return(0);
      while(--n >= 0 && *s1 == *s2++)
          if(*s1++ == '\0')
              return(0);
      return((n < 0)? 0: (*s1 - *--s2));
  }
Джамиля
0 / 0 / 0
Регистрация: 26.01.2010
Сообщений: 8
26.01.2010, 17:55  [ТС]     Указатели. #3
Огромное спасибо))
#pragma
Временно недоступен
 Аватар для #pragma
952 / 223 / 6
Регистрация: 12.04.2009
Сообщений: 921
27.01.2010, 02:02     Указатели. #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
#include <stdio.h>
#include <stdlib.h>
/* -------------------------------------------------------------------------- */
  int strncomp(const char *str1,const char *str2,size_t n);
/* -------------------------------------------------------------------------- */
  int main()
  {
     printf("%d",strncomp("DOOM","DOOR",4));
     return 0;
  }
/* -------------------------------------------------------------------------- */
  int strncomp(const char *str1,const char *str2,size_t n)
  {
     switch (strlen(str1))
     {
        case 0:
           return strlen(str2) ? -1 : 0;
        default:
           switch (strlen (str2))
           {
              case 0: return 1;
              default:break;
           }
     }
     while (n > 0 &&  (str1 != NULL &&  str2 != NULL)
                  && (*str1 != '\0' && *str2 != '\0') )
     {
        if (*str1++ == *str2++)  --n;
 
        else break;
     }
     if (n == 0) return 0;
 
     if (str2 == NULL && str1 != NULL) return  1;
     if (str1 == NULL && str2 != NULL) return -1;
     if (str1 == NULL && str2 == NULL) return  0;
 
     if (*(str1-1) >= *(str2-1)) return 1;
     else return -1;
  }
Джамиля
0 / 0 / 0
Регистрация: 26.01.2010
Сообщений: 8
27.01.2010, 13:01  [ТС]     Указатели. #5
Спасибки!
Yandex
Объявления
27.01.2010, 13:01     Указатели.
Ответ Создать тему
Опции темы

Текущее время: 01:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru