Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Samsung Galaxy Z Fold7: un grande salto generazionale
Recensione Samsung Galaxy Z Fold7: un grande salto generazionale
Abbiamo provato per molti giorni il nuovo Z Fold7 di Samsung, un prodotto davvero interessante e costruito nei minimi dettagli. Rispetto al predecessore, cambiano parecchie cose, facendo un salto generazionale importante. Sarà lui il pieghevole di riferimento? Ecco la nostra recensione completa.
The Edge of Fate è Destiny 2.5. E questo è un problema
The Edge of Fate è Destiny 2.5. E questo è un problema
Bungie riesce a costruire una delle campagne più coinvolgenti della serie e introduce cambiamenti profondi al sistema di gioco, tra nuove stat e tier dell’equipaggiamento. Ma con risorse limitate e scelte discutibili, il vero salto evolutivo resta solo un’occasione mancata
Ryzen Threadripper 9980X e 9970X alla prova: AMD Zen 5 al massimo livello
Ryzen Threadripper 9980X e 9970X alla prova: AMD Zen 5 al massimo livello
AMD ha aggiornato l'offerta di CPU HEDT con i Ryzen Threadripper 9000 basati su architettura Zen 5. In questo articolo vediamo come si comportano i modelli con 64 e 32 core 9980X e 9970X. Venduti allo stesso prezzo dei predecessori e compatibili con il medesimo socket, le nuove proposte si candidano a essere ottimi compagni per chi è in cerca di potenza dei calcolo e tante linee PCI Express per workstation grafiche e destinate all'AI.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 03-01-2011, 14:14   #1
Killer Application
Senior Member
 
L'Avatar di Killer Application
 
Iscritto dal: Jan 2006
Città: dietro di te!
Messaggi: 340
[C++]Crash a causa di un for

Ad un mio "studente" ho fatto realizzare un elenco telefonico con ricerca integrata.
Dato un nome, restituisce tutti i numeri di telefono ad esso collegati.

(è solo l'inizio, poi ci aggiungo altre cose)

Ma ho notato che il software crasha irreparabilmente all'interno del for della funzione cerca.
Se tolgo il for e lo sostituisco con una serie di If tutto è perfetto.

Lo compilo con dev-c++, che usa gcc se non ricordo male.

Codice:
#include<iostream.h>
#include<conio.h>
void cerca( char * matrix[10][3],char * nome){
     int j,i;
      for(j=0;j<10;j++){
                             if(strcmp(nome, matrix[j][0])==0){
                                                                  cout<<"il numero di telefono e'"<<matrix[j][2];
                                                                        }
                                                }
                       
                      
     
     
                                              }

main()
{
      char * matrix[10][3];
      char * nome;
      int i,j;
     
      
     matrix[0][0]="Nome";
     matrix[0][1]="Cognome";
     matrix[0][2]="Numero di Telefono";
     matrix[1][0]="Abaco";
     matrix[1][1]="Truccato";
     matrix[1][2]="0578198877";
     matrix[2][0]="Abenzio";
     matrix[2][1]="Gatti";
     matrix[2][2]="0578400033 ";
     matrix[3][0]="Abele";
     matrix[3][1]="Lamborghini";
     matrix[3][2]="0578948732";
     matrix[4][0]="Abelardo";
     matrix[4][1]="Luttarini";
     matrix[4][2]="0578552522";
     matrix[5][0]="Alda";
     matrix[5][1]="Galletti";
     matrix[5][2]="0578239199";
     matrix[6][0]="Adeodato";
     matrix[6][1]="Baldi";
     matrix[6][2]="0578816437";
     matrix[7][0]="Ercolano";
     matrix[7][1]="Baronio";
     matrix[7][2]="057816211";
     matrix[8][0]="Caio";
     matrix[8][1]="Bartoletti";
     matrix[8][2]="0578750108";
     matrix[9][0]="Cornelio";
     matrix[9][1]="Savelli";
     matrix[9][2]="0578202685";
    
     
      cout<<"di quale persona vuoi cercare il numero di telefono?";
      cin>>nome;
      cout<<nome<<endl;
      cerca(matrix,nome);
      
      
      
   for(j=0;j<10;j++){
                       for(i=0;i<3;i++){
                                        cout<<matrix[j][i]<<" ";
                                        }
                                        cout<<"\n";
                       
                       }
                       getch();
}
Killer Application è offline   Rispondi citando il messaggio o parte di esso
Old 03-01-2011, 14:42   #2
Supdario
Member
 
Iscritto dal: Mar 2008
Messaggi: 267
Hai assegnato un valore arbitario ai char * senza prima allocare dinamicamente la variabile: prima di assegnare tutti i valori dovresti usare malloc su tutte le dimensioni del vettore.

Codice:
for(i=0; i<10; i++)
{
    for(j=0; j<3; j++)
    {
        matrix[i][j] = (char *) malloc(sizeof(char)*256); //256 è la lunghezza massima della stringa
    }
}
Supdario è offline   Rispondi citando il messaggio o parte di esso
Old 03-01-2011, 14:55   #3
Killer Application
Senior Member
 
L'Avatar di Killer Application
 
Iscritto dal: Jan 2006
Città: dietro di te!
Messaggi: 340
Hai perfettamente ragione.

Vengo dal Java e queste cose specifiche non le so

Comunque devo inizializzare anche il char * nome, altrimenti crasha lo stesso.


Certo passare da un java super user friendly al c++ è traumatizzante
Killer Application è offline   Rispondi citando il messaggio o parte di esso
Old 03-01-2011, 15:26   #4
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da Killer Application Guarda i messaggi
Certo passare da un java super user friendly al c++ è traumatizzante
Se usassi (o insegnassi) new, vector e string al posto di malloc e char* vedrai che sarebbe molto meno traumatizzante. Del C++ stai usando (o meglio stai facendo usare) solo cout e cin...
tomminno è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione Samsung Galaxy Z Fold7: un grande salto generazionale Recensione Samsung Galaxy Z Fold7: un grande sal...
The Edge of Fate è Destiny 2.5. E questo è un problema The Edge of Fate è Destiny 2.5. E questo ...
Ryzen Threadripper 9980X e 9970X alla prova: AMD Zen 5 al massimo livello Ryzen Threadripper 9980X e 9970X alla prova: AMD...
Acer TravelMate P4 14: tanta sostanza per l'utente aziendale Acer TravelMate P4 14: tanta sostanza per l'uten...
Hisense M2 Pro: dove lo metti, sta. Mini proiettore laser 4K per il cinema ovunque Hisense M2 Pro: dove lo metti, sta. Mini proiett...
Identikit della scheda video perfetta, p...
SUV, 100% elettrico e costa meno di un b...
Hai mai caricato un referto su ChatGPT? ...
Apple vuole un nuovo campus nella Silico...
DJI Osmo 360, la nuova action cam a 360&...
Lo strumento anti-requisiti per Windows ...
Utenti di Claude in rivolta: 'I bei vecc...
Rocket Lab Mars Telecommunications Orbit...
NVIDIA GeForce RTX: supporto driver su W...
iliad ha iniziato a vendere smartphone d...
La cinese SatNet ha lanciato un nuovo gr...
Cloud sovrano europeo: a che punto siamo...
The Medium arriverà al cinema gra...
Addio alle faccende domestiche? Il robot...
Fallito il primo lancio del razzo spazia...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 23:34.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v