Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    C++ problema con semplice controllo su array caratteri

    Salve, ho un problema con questo programma che deve contare l'array e se di una certa lunghezza far reinserire con una parola più corta. Dunque a fine programma mi esce un errore "Stack around the variable 'file_lettura' was corrupted.".

    codice:
    #include "stdafx.h"
    #include <iostream>
    #include <cstring>
    
    
    using namespace std;
    #define DIM 15
    
    
    void controllo_lunghezza(char f[])
    {
    	int l = 0;
    	while (1)
    	{
    		
    		l = strlen(f);
    		if (l >= DIM)
    		{
    			cout << "Nome file con al massimo 15 caratteri! Inserisci nuovamente: \n";
    			cin >> f;
    		}
    		else
    			break;
    	}
    
    
    }
    int main()
    {
    	char file_lettura[DIM];
    
    
    		cout << "Inserisci il file di input(max 15 caratteri): ";
    		cin >> file_lettura;
    		controllo_lunghezza(file_lettura);
    		
    	return 0;
    }

  2. #2
    Utente di HTML.it L'avatar di MySQL
    Registrato dal
    May 2015
    Messaggi
    729
    E' un pastrocchio di C, di C++ non c'è praticamente nulla.

    Per iniziare: cosa succede con un file più lungo di DIM?

  3. #3
    Nulla, semplicemente sovrascrivo con un file più corto.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Quote Originariamente inviata da BigMoney Visualizza il messaggio
    Nulla, semplicemente sovrascrivo con un file più corto.
    In che senso?

    Se inserisci un nome con 30 caratteri cosa succede?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Semplicemente
    codice:
    if(l >= DIM)
            {
                cout <<"Nome file con al massimo 15 caratteri! Inserisci nuovamente: \n";
                cin >> f;
    
    
    

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Beh ... non direi ... a quel punto la frittata è fatta perché hai scritto in memoria oltre il consentito ... proprio come ti dice l'errore ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Ho provato ad usare cin.get(file_lettura, DIM); ma non cambia molto. Oltretutto dovrei cambiare anche la condizione if.

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ovvero, cosa hai scritto?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Il problema è che condizione utilizzare poi con l'if. Se cin.get prende al massimo 14 caratteri e poi piazza alla fine '\0'. Come faccio a capire se ho superato il limite?

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non lo capisci ma non lo superi ... Non c'è modo con i vettori di char.

    Ma dato che usi il C++, usa una string
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.