PDA

View Full Version : [C]Acquisizione stringhe da file


!Matrix!
25-01-2006, 18:04
Ciao a tutti!

Ho un problema un pò particolare per quanto riguarda l'acquisizione delle stringhe da file..

Il mio file ad esempio è composto in questo modo:

11 informatica
9 hwupgrade

In pratica il numero che precede la parola indica la dimensione della stringa da acquisire..

Lo scopo del programma è acquisire le stringhe dal file e stamparle a video...per risolverlo memorizzo la dim della stringa in una variabile che poi utilizzo successivamente per indicare alla fgets la dimensione della stringa da memorizzare..(ovviamente dopo aver fatto l'allocazione dinamica)..il problema è che non riesco a memorizzare la stringa esatta poichè l'acquisizione parte prima della prima lettera..in questo modo mi ritrovo al momento della stampa a video con 2 spazi precedenti alla parola e 2 lettere in meno alla fine..

Qualcuno sa come risolvere?Grazie in anticipo per l 'aiuto.. ;)

Ziosilvio
25-01-2006, 19:00
Se c'è solo uno spazio, dovrebbe bastare una fgetc prima della fscanf sulla stringa.

In alternativa, puoi usare fseek(stream,1,SEEK_CUR) per spostare in avanti di una posizione il puntatore al carattere corrente nel file mappato in *stream.

Qu@ker
25-01-2006, 20:13
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(void)
{
int i;
FILE *in;

in = fopen("data.txt", "r");
if (!in)
return 1;
while ((fscanf(in, "%d", &i) == 1)) {
char *c = malloc(i+1);
fscanf(in, "%s", c);
printf("\'%s\' ", c);
if (strlen(c) == i)
puts("OK");
else
puts("Errore!");
free(c);
}
fclose(in);

return 0;
}

!Matrix!
26-01-2006, 11:22
Grazie mille per l'aiuto!

Son riuscito a realizzare il programma e ho imparato nuove funzioni che non conoscevo..