Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > Как сравнить строки ?


Автор: admsasha 3.2.2005, 11:47
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

main()
{
char proba1[255],proba2[255];
strcpy(proba1,"aa");
strcpy(proba2,"aa");

if (proba2==proba1){ /// - как правильно тут написать ?
printf("TRUE");
}else{
printf("FALSE");
}
}



Автор: maxim1000 3.2.2005, 12:06
В C такого понятия, как строка нет, есть только понятие указателя на какое-нибудь место в памяти, где хранятся символы
поэтому строка
Код
proba2==proba1

сравнивает значения указателей, а не строки
для сравнения строк нужно пробежаться по ним и посмотреть, все ли символы одинаковые, останавливаться надо в конце строки, он обозначен символом с кодом 0
Код

int StringsCompare(char *s1,char *s2)
{
 while(1)//цикл для пробега по строкам
 {
   if(*s1!=*s2)//если символы разные - сразу говорим - строки разные (в том числе, если одна закончилась, а другая нет)
     return 0;
   if(*s1==0)//если строки закончились
     return 1;
   s1++;//передвигаемся впеед по первой строке
   s2++;//передвигаемся вперед по второй строке
 }
}

а вообще, конечно же, все это давно реализовано в функции strcmp smile

Автор: admsasha 3.2.2005, 12:21
Код

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

main()
{

char proba1[255],proba2[255];

   strcpy(proba1,"aa");
   strcpy(proba2,"aa");

   if (strcmp(proba2,proba1)){
       printf("TRUE");
   }else{
       printf("FALSE");
   }
}


вывод FALSE
Добавлено @ 12:30
всё, сам ошибку в примере нашел, всем спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)