Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di goatboy
    Registrato dal
    Mar 2011
    residenza
    Salerno
    Messaggi
    408

    [C] Estrazione primi 6 caratteri di un vettore di stringhe

    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ì:

    codice:
    #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:



    Aiuto!

  2. #2
    Utente di HTML.it L'avatar di SamIam
    Registrato dal
    Oct 2011
    Messaggi
    20
    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

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Rivedi, nel libro che utilizzi per studiare il linguaggio C, il capitolo relativo alle

    stringhe

    e alla necessità del terminatore.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Utente di HTML.it L'avatar di goatboy
    Registrato dal
    Mar 2011
    residenza
    Salerno
    Messaggi
    408
    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..

  5. #5
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    E ora poni il settimo (indice 6 quindi) elemento della stringa uguale a zero.

  6. #6
    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.
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Utente di HTML.it L'avatar di goatboy
    Registrato dal
    Mar 2011
    residenza
    Salerno
    Messaggi
    408
    Originariamente inviato da ramy89
    E ora poni il settimo (indice 6 quindi) elemento della stringa uguale a zero.
    Grazie mille a tutti! Risolto

  8. #8
    Utente di HTML.it L'avatar di goatboy
    Registrato dal
    Mar 2011
    residenza
    Salerno
    Messaggi
    408
    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

  9. #9
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.