Outros detalhezinhos...

Re: Outros detalhezinhos...

by Francisco Reverbel -
Number of replies: 0
Como nossa hipótese é que o usuário não digitará números com mais de 50 dígitos, o comportamento do programa no caso (que não precisa ser tratado neste EP) da entrada conter algum número com mais de 50 dígitos fica inteiramente a seu critério. Claro que o mais fácil é deixar o programa explodir, possivelmente com um segmentation fault.

Uma decisão mais razoável é apresentar uma mensagem de erro (algo como "Entrada inválida: número com mais de 50 dígitos") e encerrar a execução do programa. Outra possibilidade é apresentar a mensagem de erro, descartar o restante da linha na qual apareceu o número comprido demais e continuar a execução do programa, tratando a próxima linha da entrada.

Para fazer qualquer uma dessas coisas razoáveis (que não são obrigatórias neste EP) você não pode usar fscanf(entrada, "%s" , ...) para ler as strings contendo os números digitados, pois alguma dessas strings pode ter comprimento maior que o vetor no qual você pediu que o fscanf a colocasse... (Taí um jeito de tomar segmentation fault!) Tem que ler caractere a caractere mesmo, como o enunciado sugere, ou então usar uma função como fgets para ler a linha toda até um comprimento máximo especificado.