duvida com fscanf...

nobita6

Membro
Boas,
estou a fazer um programa em c no qual tenho de ler de um ficheiro certas informações, e para tal estou a utilizar a função fscanf, o meu ficheiro é do tipo por exemplo:

23
hugo Leal
[email protected]

e para apanhar as parametros do ficheiro estou a utilizar a funçao fscanf do seguite modo:

while(fscanf(fp," %d %s %s",&d,s,s1)!=EOF),

e ele guarda o nome "hugo" e "leal" em strings diferentes, mas eu gostava de guardar na mesma string pois depois vou querer guardar essa string do nome numa estrutura, mas assim como são duas string torna-se mais complicado... :s
 
Boas, caso seja possível, coloca aqui o formato exacto do ficheiro de input. Digo isto porque a partir do exemplo que colocaste, os dados aparentam estar dispersos por vários linhas, mas pelo fscanf que aí colocaste, parece que afinal estão todos na mesma linha. Se asssim for, podes utilizar uma (espécie de) expressão regular, uma vez que tens um espaço entre os nomes. É complicado ajudar mais sem mais detalhes, nomeadamente, se o nome tem sempre esse formato, i.e., "Nome Apelido".
 
Os dados estão colocados em linhas diferentes e esse fscanf está a apanha-los, relativamente aos nome esse é que é o meu problema é que o nome tanto pode ser caracterizado pois 2 nome ou por 3 ou por 4... se fosse so 2 era so juntar as duas strings... mas como eu não sei por quantos nomes esta caracterizado não sei se as posso juntar ou não, apenas sei que o nome esta todo contido naquela linha...
Relativamente ao fgets eu pensava que isso ia colocar o numero junto com o nome etc... mas ja vi que não por isso vou tentar desenvolver por ai...
 
Sim, nesse caso o fgets talvez seja a função mais adequada. Podes converter de string para int utilizando a função atoi.

Alguem sabe porque é que quando eu tou a converter o numero que apanho com a função gets, neste caso o 23 com a função atoi o compilador da erro, mas se fizer um strcpy para outra variavel ja não da erro quando uso a função atoi??????? :s
 
"O programa.exe encontrou um problema e vai ser encerrado. Lamentamos qualquer inconveniente que isto lhe possa causar."
como eu tou a usar o devc++ depois a janela de executar fecha, mas e um pouco esquisito pois se eu colocar uma posição da string na fução atoi e depois a atribuir a uma variavel da esse erro, mas se eu colocar a string toda ja não, e não é preciso utilizar o strcpy...
 
Isso deve ser um segmentation fault. Mas estás a dizer que estás a passar apenas uma posição da string à função atoi? É suposto passares a string toda...
 
Sim,mas eu pensava que se tinha de passar posição a posição, mas obrigado pelas ajudas ja ta tudo a correr em pleno...
Mas acho estranho aquilo dar erro se se passar uma posição da string é que eu tenho um programa no livro e eles passam la apenas uma posição de uma string que é para conseguirem somar todos os lementos da string, não sei porque é que a mim me estava a dar erro...
Mas obrigadão pela ajuda...
 
Back
Topo