scanf e \n

Iniciado por Vnepomuceno, 30 de Março de 2009, 15:04

tópico anterior - próximo tópico

Vnepomuceno

Muito boa tarde!

Estou a desenvolver um projecto que consiste em ler um ficheiro dado como input, fazer uma série de operações e devolver um certo ficheiro como output. Algumas destas operações envolvem o armazenamento numa variável, da linha que está a ser lida.

A leitura de ficheiro, estou a fazê-la com um while do tipo:

char *word = malloc(sizeof(char) * 20);
while(scanf("%s", word) != EOF)
{...}


Porém estou com um pequeno problema, todo o projecto fiz a sacar palavras (ao contrário do que poderia ter feito com caracteres) e não sei como fazer para "detectar" o \n e assim incrementar a variável da linha actual... Já virei e revirei várias soluções, mas nenhuma se adequa perfeitamente. Até já procurei sobre formatações especiais de scanf's, mas também não encontrei nada de especial.

Podiam-me dar uma ajuda, sff?

fpissarra

Não sei se entendi bem o que você quer fazer. Talvez uma possível solução seja ler o arquivo linha-a-linha (com fgets) e usar strtok ou strtok_r para separar os tokens.

Ok, é mais complicado do que fscanf, mas deve funcionar...

[]s
Fred

kunigas

Outra coisa que você pode fazer:

while (scanf("%[^\n]", word) != EOF){
    getchar();
    ...
}


O scanf lê até encontrar o caracter "\n" e não lê esse último (por isso o usamos o getchar()).