• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

fabioah

Dúvida num exercício

10 mensagens neste tópico

Pessoal, preciso resolver este exercício, alguem pode me ajudar?

Escreva em programa em C que leia duas strings de tamanhos variáveis através da linha de comando e informe se são ou não iguais considerando que letras maiúsculas e minúsculas equivalentes serão consideradas iguais. O código deverá ser desenvolvido utilizado variáveis do tipo ponteiro para varredura das strings. Não será considerado correto o código que utilizar estrutura de vetores.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ola Fábio,

A melhor solução seria ter ido a aula hoje  :biggrin: mas como voce faltou aqui vai uma ajuda.

Você precisa varrer cada string comparando caractere a caractere até o final de pelo menos uma. Se encontrar algum diferente elas são diferentes. Em relação a igualdade entre maiusculas e minusculas voce pode simplesmente converter todas as maiúsculas em minúsculas e fazer a comparação simples.

[]s

Simone (sua professora de programação)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O teu spoiler tem um buffer overflow :D

Se o input for maior que 100 caracteres, os arrays 'string1' e/ou 'string2' não têm espaço suficiente.

Correcção no link do paste ...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O teu spoiler tem um buffer overflow :D

Se o input for maior que 100 caracteres, os arrays 'string1' e/ou 'string2' não têm espaço suficiente.

Correcção no link do paste ...

Correcção: PODERÁ VIR A TER

E por isso é que está lá o #define... normalmente vêm os limites definidos... logo, é só alterar...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Correcção: PODERÁ VIR A TER

E por isso é que está lá o #define... normalmente vêm os limites definidos... logo, é só alterar...

Correcção da correcção: ESTÁ SUJEITO A BUFFER OVERFLOW

Se o input for maior ou igual ao limite definido (LEN) ocorre um buffer overflow.

Isto independentemente do valor do LEN.

Consegues "controlar" o LEN, mas não consegues "controlar" o utilizador.

Não é possível impedir o utilizar de adormecer sobre uma tecla e fazer enter ao acordar.

Se meteres o LEN a 2,000,000,000 (duvido que a memória chegue), o utilizador tem que ficar a dormir durante bastante tempo para causar o buffer overflow ... mas pode acontecer.

Mais propriamente, o utilizador pode redireccionar o input para um ficheiro e, nesse ficheiro, ter o necessário para o overflow.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Correcção da correcção: ESTÁ SUJEITO A BUFFER OVERFLOW

Se o input for maior ou igual ao limite definido (LEN) ocorre um buffer overflow.

Isto independentemente do valor do LEN.

Consegues "controlar" o LEN, mas não consegues "controlar" o utilizador.

Não é possível impedir o utilizar de adormecer sobre uma tecla e fazer enter ao acordar.

Se meteres o LEN a 2,000,000,000 (duvido que a memória chegue), o utilizador tem que ficar a dormir durante bastante tempo para causar o buffer overflow ... mas pode acontecer.

Mais propriamente, o utilizador pode redireccionar o input para um ficheiro e, nesse ficheiro, ter o necessário para o overflow.

Sim, mas essa não é a questão.

Os limites normalmente são dados e portanto, não precisamos mais do que um limite de chars.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O problema está no scanf, e não necessariamente no array. Deve-se limitar o número máximo de caracteres a ler no scanf.

Uma alternativa poderá também ser a utilização do %as. Tipo:

char *str;
scanf("%as", &str);

No entanto, isto não é ANSI.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O problema está no scanf, e não necessariamente no array.

É isso mesmo.

Obrigado por apontares para o ponto fulcral do problema. Espero lembrar-me de o fazer no futuro (se houver necessidade e) se eu souber identificar esse ponto fulcral :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora