Функция strcmp. Как использовать - C (СИ)

  1. И снова здравствуйте! (С Новым Годом и прошедшим Рождеством всех) В описаниях написано, что данная функция сравнивает строки и возвращает 0, <0, >0. Но ничего подобного я не увидела. Не подскажите в чем дело? Спасибо)C1 2 3 4 5 6 7 8 9 10 #include <stdio.h> #include <strings.h>  int main(void) {   char str1[6]="maxim";   char str2[5]="mama";   ctrcmp(str1,str2);   printf("первая строка %s вторая строка %s", str1, str2);   return(0); }


textual

Код:

#include <stdio.h>
#include <string.h>
int main(void)
{
 
  char str1[6]="maxim";
  char str2[5]="mama";
  printf("первая строка %s вторая строка %s strcmp=%d", str1, str2,strcmp(str1,str2));
  return 0;
}


Похожие ответы
  1. Описать рекурсивную функцию root(f, a, b, eps), которая методом деления отрезка пополам находит с точностью eps>0 корень уравнения f(x)=0 на отрезке [a,b]. Нужно три функции. Первая - ввод значений, вторая - подсчет весь, третья - вывод значений.

  1. Помогите пожалуйста описать рекурсивную функцию root(f,a,b,eps), которая методом деления отрезка пополам находит с точностью eps корень уравнения f(x)=0 на отрезке [a,b]. (Считать, что eps>0, a>b, f(a)*f(b)<0). Найти с ее помощью один корень уравнения sin(x)=0.5

  1. Написал функцию возведения в степень для положительных чисел, но, к сожалению, не до конца понял, как она осуществляет подсчет. Правильно ли я понимаю, что счет начинается, когда b становится равной единице? Если это так, то а умножается на выражение power(a,b-1), но каким образом происходит вычисление в этой точке?C1 2 3 4 5 6 7 8 9 10 11 12 double power(float a, int b) {     int i = b;     float k = 1;               if (b > 0)             {                   k=a*power(a, b-1);                     } return k; }Добавлено через 4 минуты power(a, b-1) при b = 1 принимает значение 1? и дальше рекурсия идет вверх, домножаясь на а каждый раз? по какой причине функция при последнем вызове принимает такое значение? (если это рассуждение верно).

  1. Назначение: вычисляет десятичное значение целого числа по заданной строке символов s, который является записью этого числа в двоичной системе счисления. Постановка задачи В соответствии с вариантом задания составить функцию для обработки символьных строк и программу для проверки работоспособности функции. За образец можно брать библиотечные функции обработки строк языка С, но не использовать их в своей функции. При выполнении 1-го задания необходимо: 1. Строки для тестирования функции вводить в главной программе с клавиатуры. 2. Предусмотреть обработку ошибок в задании параметров и особые случаи. 3. Разработать два варианта заданной функции с использованием: а) индексированных массивов; б) указателей.

  1. Здравствуйте. Есть проблемка, надеюсь поможете. Есть программа, содержащая несколько функций работы с массивами . Все функции работают нормально, кроме двоих(Внизу кусок кода). Если последней функции нет(закоментированна), то min_element работает правильно , если есть- из двух значений функций (min_element,sr_value) выводится одно и неверное. Плиз помогите , в чем ошибка C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23  void min_element (int mass[])       { int i;       int min=0;         for (i = 0; i < N; i++)  {    if (mass[min] > mass[i])        min = i;}        printf("%d",mass[min]);       }      void sr_value (int mass[])     { int sum=0; float sr=0;     int i;           for (i=0;i

  1. Не успеваю сделать такое задание для шараги, если кто может помочь хотя бы советом или напутствием, как нужно делать или где почитать про это, или каким-то примером кода ,ибо даже не понимаю , что должно из этого получиться. спасибо.

  1. Помогите с написанием функции для удаления первого пробела в строках, на картинке показано, и удаления пробелов перед знаками припинания. Заранее спасибо. вот код: C1 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 #define _CRT_SECURE_NO_WARNINGS   #include #include #include #include   #define SIZE 5   char *getStr(); char ** work(char*); char *clear_probel(char *);   int main() {     setlocale(LC_ALL, ".1251");     char *str=NULL,**result=NULL;     int i;     while (printf("Введите строку: \n"), str = getStr()){         result=work(str);         for (i=0; result[i]!=NULL; i++){             //clear_probel(result[i]);             //printf("i=%d\n", i);             printf("Строкa: \n%s\n",result[i]);         }     } //  system("pause");     return 0; }         char *clear_probel(char *str) {     char*newstr, *q;     int i;     unsigned long l;     q=str;     newstr=(char*)malloc(strlen(q)+1);     strcpy(newstr, "");     for (i=0; *(q+=strspn(q, " \t")); i++, q+=l) {         l = strcspn(q, " \t");         if (strlen(newstr))             strcat(newstr, " ");         strncat(newstr, q, l);     }     newstr = (char*)realloc(newstr, strlen(newstr) + 1);     return newstr; }   char ** work (char *str){     int i,k;     char *res, **result, *tmp, *p;     res=clear_probel(str);     result=(char**)malloc(sizeof(char*));     result[0]=NULL;     for (tmp=res, i=0; (p=strchr(tmp, '.'))!=NULL; i++, tmp=p+1){         result=(char**)realloc(result, sizeof(char*)*(i+1));         result[i]=(char*)malloc(p-tmp+2);         strcpy(result[i], "");         strncat(result[i], tmp, p-tmp+1);         //if ((k=(strchr(result[i],' ')))==1){         //}         result[i+1]=NULL;      }     free(res);     return result; }         char* getStr() {     char *str = (char *)malloc(1);     char buf[SIZE + 1];     int n, len = 0;     *str = '\0';     do {         n = scanf("%5[^\n]", buf, SIZE + 1);         if (n < 0) {             free(str);             str = NULL;             continue;         }         if (n == 0)             scanf("%*c");         else {             len += strlen(buf);             str = (char *)realloc(str, len + 1);             strcat(str, buf);         }     } while (n > 0);     return str; }

  1. Функция - Parse(s,t). Разделение строки s на две части: до первого вхождения символа t и после него Нужно разработать два варианта заданной функции - используя традиционную обработку массивов и используя адресную арифметику. ПОМОГИТЕ! Как можно сделать используя традиционную обработку массивов? " используя адресную арифметику" задача вроде бы решаеться так:C1 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 #include #include #include #include #define n 100   int c; char str1[n], str2[n]; char* tmp = 0;   void Parse(char *strr) {       for (char* p = strr; *p; p++)         printf("%c", *p);     printf("\n");     for (char* p = strr; *p; p++)         if (*p == 't') {             tmp = p;             printf("%d", p - strr);             printf("\n");             break;         }     for (char* p = strr, *p1 = str1, *p2 = str2; *p; p++)     {         if (p < tmp)         {             *p1 = *p;             p1++;         }         else if (p > tmp)         {             *p2 = *p;             p2++;         }     } }   int main() {     while (!(c == 27))     {           system("cls");         printf(" Enter - run the program.\n");         printf(" Esc - exit.\n");         printf(" Any other key - information about program.\n");         c = getch();         system("cls");         switch (c)         {         case 13:         {             char str[n];             fputs(" Vvedite tekst -> ", stdout);             fgets(str, sizeof(str), stdin);               Parse(str);             for (char* p = str1; *p; p++)                 printf("%c", *p);             printf("\n\t\t < - Pervaya chast'\n\n");             for (char* p = str2; *p; p++)                 printf("%c", *p);             printf("\t\t < - Vtoraya chast'\n");             printf("\n\n\n  Esc - exit.\n");             printf("  Any other - go to the main page.\n");             c = getch();             break;             system("cls");         }           case 27:             break;         default:         {             system("cls");             printf("     Funktsiya - Parse (s, t). Razdeleniye strok s na dve chasti: \n");             printf("          do pervogo vkhozhdeniya simvola t i posle nego\n");             printf("\n\n  Esc - exit.\n");             printf("  Any other - go to the main page.\n");             c = getch();             system("cls");             break;         }         }     }     return 0; }

  1. Как я понимаю: использовать scanf + массив для проверки на корректность ввода - неудачная идея. Она не чистит буфер, который предоставляет stdio ( ни совсем понимаю чего там происходит )).C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include   int main(void){       int n;   // Вариант с выходом из программы - все работает     printf("Введите значение: ");     if ( (scanf("%d",&n) ) != 1 ){         printf("Неверное введенное значение");         return 1;     }   // проверка с использованием цикла - зацикливает       printf("Введите значение: ");     while ( (scanf("%d",&n) ) != 1 )         printf("Неверное введенное значение, попробуйте еще: ");     printf("Успех!"); }Неужели единственный способ корректной проверки, это использовать функции read или getс, посимвольно считывать в массив, и потом уже проверять ??

  1. Добрый день. Помогите, пожалуйста, составить функцию, которая переставляет в обратном порядке k элементов массива A, начиная i-го (числа i и k задается пользователем):A[1], A[2], …, A[i–1], A[i+k], A[i+k–1], …, A[i+1], A[i], A[i+k+1], …, A[n]. Массив динамический.