Visualizzazione dei risultati da 1 a 10 su 11

Visualizzazione discussione

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    144

    [C] Lettura e scrittura di parole codificate da file

    Ciao ragazzi,

    sto scrivendo un programma in C che legga delle stringhe da file. Il codice che ho scritto è quello presente qui sotto. In pratica, tale programma legge il il file "input.txt" (passato come parametro in argv[1]) contenente le seguenti stringhe:

    9AJ4D
    456F
    FFD34

    e memorizza ogni stringa nel vettore di caratteri "parola_codificata[31]"

    Il problema è che non appena viene eseguito il for(i=0; i<MAX_R; i++), indipendentemente quale sia la stringa (la 1° la 2° o la 3°) letta, gli elementi della posizione 2 e 3 del vettore parola_codificata si trasformano magicamente in N ovvero ottengo sempre:

    parola_codificata[1] = N e parola_codificata[2] = N


    Sapete dirmi perchè questo capita??


    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <ctype.h>
    
    
    #define MAX_R 30
    
    
    
    
    int main(int argc, char *argv[])
    {
        FILE *ptrcode;
        FILE *ptrdec;
        char alf_cod32 [35] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','J','K','L','M','N','P','Q','R','S','T','U','V','W','X','Y','Z'};
        char carattere, parola_codificata[31], chiave[31];
        int i, j, p;
    
    
    
    
    
    
        if(argc!=3)
            {
                printf("Errore nell'immissione degli argomenti!!\n\n");
                exit(EXIT_FAILURE);
            }
        else if((ptrcode=fopen(argv[1], "r"))==NULL)
            {
                printf("impossibile aprire il file %s\n\n", argv[1]);
                exit(EXIT_FAILURE);
            }
        else if((ptrdec=fopen(argv[2], "w"))==NULL)
            {
                printf("impossibile scrivere sul file %s\n\n", argv[2]);
                exit(EXIT_FAILURE);
            }
    
    
        else{
    
    
            /*    inizializza tutta la matrice col carattere di fine stringa  */
    
    
        for (i = 0; i < MAX_R; i++)
                    parola_codificata[i] = '\0';
    
    
            while (!feof (ptrcode))
               {
                    fscanf (ptrcode, "%s", parola_codificata);
    
    
                    /*printf("\n%s", parola_codificata);
    
    
                            printf("\n carattere 2: %c", parola_codificata[1]);
                            printf("\n carattere 3: %c", parola_codificata[2]);*/
    
    
                    for(i=0; i<MAX_R; i++)
                    {
                        //printf("\n%c", parola_codificata[i]);
                        for(j=0; j<strlen(alf_cod32); j++)
                        {
                            printf("\n carattere 2: %c", parola_codificata[2]);
                            printf("\n carattere 3: %c", parola_codificata[3]);
    
                            if(parola_codificata[i] == alf_cod32[j])
                                {
                                    printf("\n carattere: %c indice %d indice alfabeto: %d", parola_codificata[i], i, j);
                                    fprintf(ptrdec, "%d", j);
    
    
                                }
                            p = parola_codificata[i] - '0';
                            //controllo se il carattere corrente è un numero
                            if (isalpha(p)==0){
                                chiave[j] = 'N';
                                }
                            else{
                                chiave[j] = 'L';
                            }
                        }
                    }
                    fprintf(ptrdec, "\n");
    
    
                }
                fclose(ptrcode);
                fclose(ptrdec);
        }
    }
    Ultima modifica di mbistato; 06-09-2014 a 16:03

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 © 2026 vBulletin Solutions, Inc. All rights reserved.