|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#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 17:39. |
|
|
|
|
|
#2 |
|
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16214
|
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" Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu |
|
|
|
|
|
#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;
}
|
|
|
|
|
|
#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: 14:52.



















