Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20

Discussione: [C] Leggere le matrici

  1. #1

    [C] Come leggo le matrici in C??

    Salve a tutti. Ho creato una matrice così: char lista[100][2][20]. Le righe e le colonne sono rappresentate dai primi 2 indici, il terzo indice sta ad indicare la dimensione di ogni singolo elemento... ma come faccio a leggere un singolo elemento con scanf? Ho provato vari modi ma alla fine ogni singolo elemento risulta vuoto...

  2. #2
    Vuoi leggere una stringa con la scanf nella matrice? Una cosa del genere dovrebbe funzionare:
    codice:
    scanf("%19s",lista[65][1]);
    (65 e 1 ovviamente sono indici inventati sul momento, puoi mettere qualunque indice valido).
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Scusa ma a che serve quel 19 tra % e s? Comunque questo è il mio codice completo:

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
    	char lista[100][2][20];
    	FILE *f;
    	f = fopen ("lista.txt", "r");
    	
    	int studenti = 0;
    	
    	while (!feof (f))
    	{
    		fscanf (f, "%s", lista[studenti][0]);
    		fscanf (f, "%s", lista[studenti][1]);
    		
    		studenti++;
    	}
    	
    	int i;
    	for (i = 0; i < studenti; i++)
    		printf ("%s %s\n", lista[studenti][0], lista[studenti][1]);
    	
    	return 0;
    }
    Il problema è che quando lo mando in esecuzione, gli elementi della matrice sono vuoti! Eppure sul file le stringhe da leggere ci sono eccome... o_O

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da Dreamer89
    Scusa ma a che serve quel 19 tra % e s?
    A leggere al massimo 19 caratteri dato che tu hai dimensionato le stringhe con 20 caratteri (escluso il terminatore). Altrimenti rischi un buffer overflow.

    Comunque questo è il mio codice completo:
    printf ("%s %s\n", lista[i][0], lista[i][1]);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Oddio a volte quando mi perdo in queste cose mi spavento... grazie mille!

  6. #6
    Un'ultima cosa... alla seconda stringa che leggo vorrei sostituire l'underscore _ con uno spazio vuoto " ", come faccio? Ho provato così:

    printf ("%s %s\n", lista[i][0], str_replace ("_", " ", lista[i][1]));

    Ma mi da errore...

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Ti da' errore ... quale e dove?

    Cosa e' str_replace?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Originariamente inviato da oregon
    Ti da' errore ... quale e dove?

    Cosa e' str_replace?
    str_replace dovrebbe essere la funzione che mi sostituisce i caratteri... e questo è l'errore: http://img363.imageshack.us/img363/8170/user1tw1.jpg

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Dovrebbe essere? Scusa, ma dove l'hai trovata quella funzione? E' una tua funzione? Il suo codice qual e'?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Comunque sia fatta questa funzione, la stai utilizzando sicuramente in modo sbagliato, visto che la metti all'interno della scanf; devi metterla dopo, quando la stringa è già stata memorizzata.
    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 © 2024 vBulletin Solutions, Inc. All rights reserved.