@re3r0

Как улучшить код сравнения строк?

#include <stdio.h>

int compare_word(char *word_one, char *word_two){
  for (int i = 0; (*(word_one + i) != '\0') || (*(word_two + i) != '\0'); ++i)
    if (*(word_one + i) != *(word_two + i))
      return 0;

  return 1;
}


int main(){

	char word_one[] = "helloworld";
	char word_two[] = "helloworld !";

  if (compare_word(&word_one[0], &word_two[0]))
    printf("%s\n", "all is ok !");
  else
    printf("%s\n", "all is not ok !");
  return 0;
}


Либо скажите что дальше улучшать некуда и моя душа успокоится.
  • Вопрос задан
  • 98 просмотров
Пригласить эксперта
Ответы на вопрос 1
CityCat4
@CityCat4
Если я чешу в затылке - не беда!
Ну посмотри уже исходник strcmp. Потому что у тебя если первая строка например "I love toster and spent here many hours" а вторая "I love toster" - то ты выхватываешь SIGSEGV, потому что первая строка еще идет, а вторая - уже кончилась (а для проверки условия завершения цикла нужно вычислить оба условия)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы