|
|
|
|
Strumenti |
25-01-2006, 18:04 | #1 |
Junior Member
Iscritto dal: Jan 2006
Messaggi: 8
|
[C]Acquisizione stringhe da file
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.. Ultima modifica di !Matrix! : 25-01-2006 alle 18:39. |
25-01-2006, 19:00 | #2 |
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16111
|
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.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia. Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 |
25-01-2006, 20:13 | #3 |
Member
Iscritto dal: Apr 2004
Messaggi: 130
|
Codice:
#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; } |
26-01-2006, 11:22 | #4 |
Junior Member
Iscritto dal: Jan 2006
Messaggi: 8
|
Grazie mille per l'aiuto!
Son riuscito a realizzare il programma e ho imparato nuove funzioni che non conoscevo.. |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:57.