PDA

Visualizza la versione completa : [C] Estrazione primi 6 caratteri di un vettore di stringhe


goatboy
12-01-2012, 12:31
Salve a tutti, sto facendo un esercizio dove devo leggere da file delle stringhe, salvarle in un vettore e prendere i primi 6 caratteri di ogni stringa. Ho scritto così:



#include <stdio.h>
#define M 20
#define N 30

int lettura(char parole[][N]){
FILE *f;
int i;
int num;
f=fopen("parole.txt", "r");
fscanf(f, "%d", &num);
while(!feof(f)){
for(i=0; i<num; i++){
fscanf(f, "%s", &parole[i]);
}
}
fclose(f);
return num;
}

int main(){
int dim;
int i, j;
char parole[M][N];
char caratteri[M][6];
dim=lettura(parole);
for(i=0; i<dim; i++){
for(j=0; j<6; j++){
caratteri[i][j]=parole[i][j];
}
printf("%s\n", caratteri[i]);
}
}


Legge i primi 6 caratteri ma non so perchè aggiunge dei caratteri strani alla fine di ogni parola:

http://i40.tinypic.com/2eukitx.png

Aiuto! :dhò:

SamIam
12-01-2012, 13:23
In C bisogna sempre terminare le stringhe con uno zero binario, e ovviamente ogni stringa dovrà riservare un char per questo carattere di terminazione, pertanto ogni stringa dovrà essere di 7 caratteri :)

oregon
12-01-2012, 14:04
Rivedi, nel libro che utilizzi per studiare il linguaggio C, il capitolo relativo alle

stringhe

e alla necessità del terminatore.

goatboy
12-01-2012, 15:37
Originariamente inviato da SamIam
In C bisogna sempre terminare le stringhe con uno zero binario, e ovviamente ogni stringa dovrà riservare un char per questo carattere di terminazione, pertanto ogni stringa dovrà essere di 7 caratteri :)
Ho sostituito mettendo al posto di 6 il 7, ma non cambia nulla..

ramy89
12-01-2012, 16:09
E ora poni il settimo (indice 6 quindi) elemento della stringa uguale a zero.

MItaly
12-01-2012, 16:38
In effetti ti basterebbe troncare parole a 6 caratteri mettendo uno 0 al settimo carattere di ogni riga invece di stare a copiare i primi 6 caratteri in un altro array.

goatboy
12-01-2012, 16:44
Originariamente inviato da ramy89
E ora poni il settimo (indice 6 quindi) elemento della stringa uguale a zero.
Grazie mille a tutti! Risolto :D :D

goatboy
12-01-2012, 16:45
Originariamente inviato da MItaly
In effetti ti basterebbe troncare parole a 6 caratteri mettendo uno 0 al settimo carattere di ogni riga invece di stare a copiare i primi 6 caratteri in un altro array.
Ed è esattamente quello che ho fatto! Grazie :)

MItaly
12-01-2012, 16:52
:ciauz:

Loading