Visualizzazione dei risultati da 1 a 10 su 14

Visualizzazione discussione

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2016
    Messaggi
    13

    [C++] lettura stringa da file con gets

    Chiave.txtCiao a tutti!! Sto cercando di compilare un algoritmo che mi codifichi e decodifichi una stringa in base ad una chiave inserita come .txt sul desktop.. Premetto che ora sto solo provando se funzioni e appena funzionerà come deve cercherò di migliorarla creando una classe.. Ora però ho un problema con la funzione gets(): prima non avevo ancora le due procedure cripto e decripto funzionava come doveva; ora eseguendo mi salta la lettura della stringa. Sostituendola con cin funziona ma non legge gli spazi, prima addirittura non avevo nemmeno dichiarato stringa come array con dimensione MAX (l'avevo allocata dinamicamente) con:
    char* stringa= new char;
    gets(stringa);
    ...
    ...
    puts(stringa);
    e funzionava bene (non avevo un numero massimo di caratteri da poter inserire).
    Ora però non funziona più.. Potere aiutarmiii, Grazie in anticipo. Ho allegato anche la chiave se volete provarlo.
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <iostream>
    #include <fstream>
    
    
    #define MAX 1000
    
    
    void decripto(char*, const char* const);
    void cripto(char*, const char* const );
    
    
    using namespace std;
    
    
    char alp[]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',' '};
    
    
    int main(){
       ifstream cinf("C:\\Users\\chris\\Desktop\\Chiave.txt", ios::in);
        if (cinf.good()){
           char ch[28];
           cinf>>ch;
           int risposta=0;
           do{
           puts("Vuoi criptare o decriptare"
                   "[1/2]");
           cin>>risposta;
           if (risposta==1){
               char stringa[MAX]; 
               gets(stringa);
               cripto(stringa, ch);
               puts(stringa);
    
    
           }
           else if(risposta==2){
               char stringa[MAX]; 
               gets(stringa),
               decripto(stringa, ch);
               puts(stringa);
                   }
           else {
               system("cls");
               cout<<"Risposta non contemplata, Riprova.";
               continue;
           }
           cout<<"Ti servo ancora?"<<endl;   
        }
           while(risposta);
      system("PAUSE");    
      return 0;
    }
    }
    
    
    
    void cripto(char* str, const char* const chiave){
         int cont=0 ;
           do {
               for(int i=0; i<27;i++){
                   if  (*str==alp[i]){
                       *str=*(chiave+i);
                       cont++;
                       break;
                   }
                   
               }
            str++;    
           }
           while (*str);   
    }
    
    
    void decripto(char* str, const char* const chiave){
         int cont=0 ;
           do {
               for(int i=0; i<27;i++){
                   if (*str==*(chiave+i)){
                       *str=alp[i];
                       cont++;
                       break;
                   }
                   
               }
            str++;    
           }
           while (*str);   
    }
    Ultima modifica di chrisco; 30-06-2016 a 01:38

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.