PDA

Visualizza la versione completa : [C] File di testo a vettore di stringhe


carloekekko
27-01-2009, 12:57
Ragazzi abbiamo un altro problema:

Non riesco a memorizzare una stringa da un file di testooooo!!!!
Vi posto quello ke faccio:

#include <stdio.h>
#define max 50

int main () {
char q[max];

FILE *a=fopen ("a.txt","r");
fscanf(a,"%s", q);
printf ("%s", q);

fclose(a);

getche ();
return 0;
}

sono disperato xk in un esercizio di questo tipo precedente in cui la sintassi era ottima cmq, non dava niente il programma, ma in qst ultimo esercizio va addirittura in crash!!! :dh:

Stoicenko
27-01-2009, 13:06
edit

che errore ti da? compila almeno?

Mr.Bloom
27-01-2009, 13:11
io proverei con fgets(), tanto non devi formattare niente dato che il tuo format un semplice "%s"

carloekekko
27-01-2009, 13:12
ho risoltooooooooooooo grazie a tutti siete sempre gentili e utilissimi grazie davverooooooooo :zizi:

carloekekko
27-01-2009, 13:58
Scusatemi altro problema... come faccio, in acquisizione stringa da un file a ignorare gli spazi?

es: file: a b c d e f

come faccio a memorizzare le stringhe in un unico vettore senza gli spazi in modo ke il vettore stringa immagazzini "abcdef"?

grazie :D

Mr.Bloom
27-01-2009, 14:25
prova cosi




char *i = tua stringa;

for( k = 0 , m = 0; *(i+k) != '\0' ; k++ ){
if(*(i+k) == ' ')
continue;

*(i+m) = *(i+k);
m++;

}

Mr.Bloom
27-01-2009, 14:26
il carattere non riconosciuto slash zero.

assumiamo una stringa C terminante con tale carattere

carloekekko
27-01-2009, 17:08
Scusa la mia ignoranza Bloom ma potresti spiegarmi l'algoritmo ke hai postato xk non ci ho capito molto...grz.
So ke il carattere di fine stringa '\0' e di solito viene dato dallo scanf in automatico ma proprio questo il problema. Qnd acquisisci qlcs come stringa il compilatore appena incontra uno spazio ferma l'acquisizione troncando la stringa infatti se voglio acquisire "ciao sto bene" come una sola stringa io m aspetto di caricare |c|i|a|o| |s|t|o| |b|e|n|e|\0| invece incontrato il primo spazio qst vien interpretato come \0 e si ferma quindi mi d "ciao" e basta.
E' mai possibile ke devo creare un vettore stringa ogni parola? :dh:

Mr.Bloom
27-01-2009, 17:29
Man scanf

s Matches a sequence of non-white-space characters; the next
pointer must be a pointer to character array that is long enough
to hold the input sequence and the terminating null character
(\0), which is added automatically. The input string stops at
white space or at the maximum field width, whichever occurs
first.


ti consiglio di non usare queste funzioni a meno che tu non debba effettuare delle conversioni

per esempio mettere in tre variabili tre numeri dalla stringa "44 98 54"
in cui faresti la format "%d %d %d, I, J, K"

se devi copiare una stringa usa strcpy(), e in generale tutte le funzioni in string.h

carloekekko
27-01-2009, 17:31
ho capito il C una merda e dovr fo**ermi abbastanza vero?...lol

Loading