Rickbyte 0 Denunciar post Postado Dezembro 1, 2007 Estou usando fgets para ler uma string e atribuir uma variável. Esta variável é um vetor. Dentro do laço há outra variável que receberá dados do tipo inteiro (que será atribuido com scanf) do teclado. A primeira variável é que recebe os dados lidos com fgets. Portanto ficaria assim: fgets(variável, int, stdin). Supondo que o valor int seja 10, a string teria 9 caracteres. Se os dados digitados não passam o limite tudo ocorre normalmente e a próxima variável dentro do laço é executada. Mas se os dados digitados passam o limite, a variável abaixo, dentro do laço, não é executada, o contador é incrementado e o laço inicia novamente a execução, pulando a primeira variável (que não sei se fica vazia ou recebe o excedente que foi digitado anteriormente) que seria atribuída com fgets, e para na segunda variável que recebe dados do tipo inteiro com scanf. O que da a entender é que dos dados excedentes são atribuídos à variável logo abaixo. Gostaria de saber o que acontece quando são digitados mais dados do que o definido com fgets. Será que fgets retorna alguma valor para indicar que foram digitados mais dados do que o necessário. Preciso dessa informação para poder gerar uma mensagem de erro, e fazer outro laço (um do while -- fazendo com que fgets fique rodando até que não seja digitado mais dados do que o definido) para que seja os dados sejam atribuídos para a variável. desde já grato!!! Aproveitando o gancho como tem fazer isto com inteiros também. Compartilhar este post Link para o post Compartilhar em outros sites
Roberto_mms 0 Denunciar post Postado Dezembro 10, 2007 Estou usando fgets para ler uma string e atribuir uma variável. Esta variável é um vetor. Dentro do laço há outra variável que receberá dados do tipo inteiro (que será atribuido com scanf) do teclado. A primeira variável é que recebe os dados lidos com fgets. Portanto ficaria assim: fgets(variável, int, stdin). Supondo que o valor int seja 10, a string teria 9 caracteres. Se os dados digitados não passam o limite tudo ocorre normalmente e a próxima variável dentro do laço é executada. Mas se os dados digitados passam o limite, a variável abaixo, dentro do laço, não é executada, o contador é incrementado e o laço inicia novamente a execução, pulando a primeira variável (que não sei se fica vazia ou recebe o excedente que foi digitado anteriormente) que seria atribuída com fgets, e para na segunda variável que recebe dados do tipo inteiro com scanf. O que da a entender é que dos dados excedentes são atribuídos à variável logo abaixo. Gostaria de saber o que acontece quando são digitados mais dados do que o definido com fgets. Será que fgets retorna alguma valor para indicar que foram digitados mais dados do que o necessário. Preciso dessa informação para poder gerar uma mensagem de erro, e fazer outro laço (um do while -- fazendo com que fgets fique rodando até que não seja digitado mais dados do que o definido) para que seja os dados sejam atribuídos para a variável. desde já grato!!! Aproveitando o gancho como tem fazer isto com inteiros também. Cara eu nunca vi isso que você esta querendo.. Em assembly tem um registrador que guarda quantos caracteres foram digitados.. então há uma possibilidade de linguagens superiores tb ter.. quanto a isso eu nao posso te ajudar mas posso te dizer que quando você digita mais do que o esperado.. dependendo do modo que você usa para receber os dados.. ele simplismente despreza o excedente.. ele sabe quantos caracteres deve receber.. entao ele simplismente recebe os dados e despreza o resto.. pense na variavel como um copo.. se você colocar coisa demais ele simplesmente transborda.. e você so vai usar o que esta dentro do copo. Compartilhar este post Link para o post Compartilhar em outros sites