RicardoLopes Posted March 11, 2015 at 05:54 PM Report Share #579163 Posted March 11, 2015 at 05:54 PM (edited) Boas, eu estou aqui com um pequeno problema no meu codigo. tree loadfile(char file[],tree t){ int val=0, total=0; char code[40]; FILE *d; d=fopen(file,"r"); if (d!=NULL){ while(fgets(code,40,d)!=NULL){ if (code[strlen(code)-1]=='\n') code[strlen(code)-1]='\0'; else code[strlen(code)]='\0'; if (validecode(file,code)){ t=inserir(t,code); val++; } total++; } printf("%s\n",code); fclose(d); printf("%s carregado com succeso, %d codigos validados %d codigos lidos\n",file,val,total); } else printf("Erro ao carregar o ficheiro %s\n",file); return t; } Ele não dá erro a compilar e a executar tbm não, o problema é que tenho uma função que recebe uma árvore e verifica se uma dada string lá existe ou não e esta devolve me sempre falso tirando à excepção da última linha que lê. Eu tenho uma função que imprime todas as strings que estão numa arvore e elas aparecem todas lá, por isso não faço mesmo a minima do que seja. Alguma ideia do que possa ser? Edited March 11, 2015 at 05:58 PM by rdolxd Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted March 11, 2015 at 06:09 PM Report Share #579165 Posted March 11, 2015 at 06:09 PM Alguma ideia do que possa ser? mais do que uma ideia, sei exactamente qual é o problema. olha para o segundo parágrafo da segunite explicação da função fgets: URL : http://www.cplusplus.com/reference/cstdio/fgets/ Reads characters from stream and stores them as a C string into str until (num-1) characters have been read or either a newline or the end-of-file is reached, whichever happens first. A newline character makes fgets stop reading, but it is considered a valid character by the function and included in the string copied to str. A terminating null character is automatically appended after the characters copied to str. Notice that fgets is quite different from gets: not only fgets accepts a stream argument, but also allows to specify the maximum size of str and includes in the string any ending newline character. já sabes qual é o problema ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
RicardoLopes Posted March 11, 2015 at 07:24 PM Author Report Share #579171 Posted March 11, 2015 at 07:24 PM já sabes qual é o problema ? Mais ou menos, eu suspeitava dos newlines, mas em cima no código que meti aí, eu tenho uma linha para tirar os newlines e meter \0 caso os tivesses... E pelo menos quando chamo a função para imprimir as strings que estão na estrutura de dados ela não me imprimo um newline a mais que era o que acontecia quando eu não tinha essa linha Link to comment Share on other sites More sharing options...
RicardoLopes Posted March 11, 2015 at 09:10 PM Author Report Share #579179 Posted March 11, 2015 at 09:10 PM (edited) Estive agora a tentar "ver" o que não deveria estar na string supostamente, acontece que fiz um ciclo para ver em que posição estaria o \n na string, as strings do ficheiro tem sempre este tipo AA123 (duas maiusculas e 3 numeros), e aparecia me o indice 6, não deveria ser no indice 5? e depois fiz printf dos caracteres que estivesse no indice 5 da string e não aparecia nada isto é possivel? edit: já descobri, tinha um \r antes do \n, mas só não percebo porque que tem o \r atrás Edited March 11, 2015 at 10:12 PM by rdolxd Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted March 11, 2015 at 10:28 PM Report Share #579182 Posted March 11, 2015 at 10:28 PM edit: já descobri, tinha um \r antes do \n, mas só não percebo porque que tem o \r atrás porque quem criou o ficheiro fez-lo no windows IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
RicardoLopes Posted March 11, 2015 at 10:50 PM Author Report Share #579184 Posted March 11, 2015 at 10:50 PM porque quem criou o ficheiro fez-lo no windows Não sabia isso, obrigado pela ajuda Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now