Luiz_Junior Postado Dezembro 15, 2011 Denunciar Share Postado Dezembro 15, 2011 (editado) Eu uso fscanf, mas quando eu do printf na variável que armazenou a stream, ela aparece o nome sem a primeira letra.Observe:#include <stdio.h> char nome[1]; char leitura[1]; int main(void) { printf("Digite o nome: "); scanf("%[^\n]",nome); FILE *fp; fp=fopen("lista","w+"); fprintf(fp,"%s",nome); fscanf(fp,"%s",leitura); fclose(fp); printf("Nome: %s\n",leitura); return 0; }Pelo que li o fscanf pula leitura de "tabs", acho que ele está considerando a leitura do nome na lista como tab.Alguém pode me explicar o que está acontecendo e como resolver? Editado Dezembro 19, 2011 por Durub Adicionar tags code [Durub] Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 tucano Postado Dezembro 16, 2011 Denunciar Share Postado Dezembro 16, 2011 (editado) Luiz_Junior,põe um rewind(fp); depois do fprintf(fp,"%s",nome); que funciona. Não tenho nem ideia do que cause isso... Editado Dezembro 16, 2011 por tucano Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mJi Postado Dezembro 17, 2011 Denunciar Share Postado Dezembro 17, 2011 char nome[1]; char leitura[1];Declarar um vetor de char com apenas uma posição é a mesma coisa que declarar um char único. Um vetor de char que armazene uma string deve possuir exatamente ou mais posições que a quantidade de caracteres que será digitado + um (espaço para o terminador nulo).O fprintf() move o ponteiro para a posição final da string no arquivo após a escrita. O rewind() faz o ponteiro voltar à posição inicial, o que posibilita ler o dado do arquivo.Se o nome digitado possuir espaços, e no fscanf() você ler apenas como '%s', ele vai retornar apenas a primeira parte do nome. O espaço funciona como um separador. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Luiz_Junior
Eu uso fscanf, mas quando eu do printf na variável que armazenou a stream, ela aparece o nome sem a primeira letra.
Observe:
Pelo que li o fscanf pula leitura de "tabs", acho que ele está considerando a leitura do nome na lista como tab.
Alguém pode me explicar o que está acontecendo e como resolver?
Editado por DurubAdicionar tags code [Durub]
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.