Oi Mateus,
Alguma ideia do porque a strcmp não está funcionando como deveria?
Não sei a razão do seu programa não estar funcionando corretamente, mas meu chute é que a função strcmp está funcionando como deve. A função strcmp é bem fácil de ser implementada. Eis uma possível implementação dessa função (como é mostrada no livro do Kernigham e Ritchie):
/* strcmp: return <0 if s<t, 0 if s==t, >0 if s>t */
int
strcmp (char *s, char *t)
{
for ( ; *s == *t; s++, t++)
if (*s == '\0')
return 0; /* s é substring de t */
return *s - *t;
}
Uma outra implementação seria
int
strcmp (char *s, char *t)
{
int i;
for (i = 0; s[i] == t[i]; i++)
if (s[i] == '\0')
return 0; /* s é substring de t */
return s[i] - t[i];
}
Apenas repetindo o que o Bruno já escreveu:
meu-prompt>man strscmp
STRCMP(3) Linux Programmer's Manual STRCMP(3)
NAME
strcmp, strncmp - compare two strings
SYNOPSIS
#include <string.h>
int strcmp(const char *s1, const char *s2);
int strncmp(const char *s1, const char *s2, size_t n);
DESCRIPTION
The strcmp() function compares the two strings s1 and s2. It returns an integer less than, equal to, or
greater than zero if s1 is found, respectively, to be less than, to match, or be greater than s2.
The strncmp() function is similar, except it only compares the first (at most) n characters of s1 and
s2.
RETURN VALUE
The strcmp() and strncmp() functions return an integer less than, equal to, or greater than zero if s1
(or the first n bytes thereof) is found, respectively, to be less than, to match, or be greater than s2.
CONFORMING TO
SVr4, 4.3BSD, C89, C99.
SEE ALSO
bcmp(3), memcmp(3), strcasecmp(3), strcoll(3), string(3), strncasecmp(3), strverscmp(3), wcscmp(3),
wcsncmp(3)
COLOPHON
This page is part of release 3.40 of the Linux man-pages project. A description of the project, and
information about reporting bugs, can be found at http://www.kernel.org/doc/man-pages/.