Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare
Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare
Abbiamo messo alla prova il drone Antigravity A1 capace di riprese in 8K a 360° che permette un reframe in post-produzione ad eliche ferme. Il concetto è molto valido, permette al pilota di concentrarsi sul volo e le manovre in tutta sicurezza e decidere con tutta tranquillità come gestire le riprese. La qualità dei video, tuttavia, ha bisogno di uno step in più per essere competitiva
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator
Dopo oltre 4 anni si rinnova la serie Sony Alpha 7 con la quinta generazione, che porta in dote veramente tante novità a partire dai 30fps e dal nuovo sensore partially stacked da 33Mpixel. L'abbiamo provata per un breve periodo, ecco come è andata dopo averla messa alle strette.
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1
realme e Aston Martin Aramco F1 Team si sono (ri)unite dando alla vita un flagship con chip Snapdragon 8 Elite Gen 5 e design esclusivo ispirato alle monoposto di Formula 1. La Dream Edition introduce la nuova colorazione Lime Essence abbinata al tradizionale Aston Martin Racing Green, decorazioni intercambiabili personalizzate e una confezione a tema F1, intorno a uno smartphone dall'ottima dotazione tecnica con batteria da 7000mAh ricaricabile a 120W e isola fotografica intercambiabile
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 21-09-2005, 22:43   #21
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
La seconda che hai detto
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 21-09-2005, 22:50   #22
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
la seconda; non si possono inizializzare i membri delle struct, almeno non mi sembra, e comunque sicuramente non con i risultati di una funzione.

aridaje, preceduto un'altra volta
questa volta non di poco però; mi sa che non mi ero accorto che avevi già scritto
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 22-09-2005, 08:02   #23
pumax84
Member
 
L'Avatar di pumax84
 
Iscritto dal: Jun 2005
Messaggi: 99
Capisco capisco..
Però come mai in un programma del genere anche se non alloco memoria funziona lo stesso?

Codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void stampa(char **secondo){
     char *pippo;
     pippo = "Puntatore di puntatore";
     *secondo = pippo;
     return;
}

char * stampa2(){
     char *pippo;
     pippo = "Return puntatore a caratteri";
     return pippo;
}

void stampa3(char *primo){
     char *secondo;
     secondo = primo;
     printf("Stampa secondo stringa interna: %s\n\n", secondo);
     return;
}

int main(void)
{
  char *primo = "Assegnazione interna alla main";
  char *secondo = NULL;
  char *primo_funz = "secondo = primo";
  
  //Assegnazione interna alla main
  secondo = primo;
  printf("%s\n\n", secondo);
  
  //Puntatore di puntatore
  stampa(&secondo);
  printf("%s\n\n", secondo);
  
  //Return puntatore a caratteri
  secondo = stampa2();
  printf("%s\n\n", secondo);
  
  stampa3(primo_funz);
  	
  system("PAUSE");
  return 0;
}
pumax84 è offline   Rispondi citando il messaggio o parte di esso
Old 22-09-2005, 08:21   #24
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Perchè le stringhe dichiarate in questo modo sono a tutti gli effetti variabili allocate in memoria: "Assegnazione interna alla main"

Di conseguenza gli scambi fra puntatori che lavorano su queste variabili hanno successo...prova a modifcarle
In ogni caso le variabili di questo tipo vengono allocate tutte (non obbligatoriamente, ma in molti compilatori avviene) all'inizio del programma e di conseguenza, seppure quello che hai fatto è scorretto dal punto di vista del C, nonostante tutto funziona...

Prova a farci qualche operazione come strcat o strcpy e poi fammi sapere

PS: un'assegnazione come questa: char *s = "Pippo"; non è di per se scorretta... Diventa scorretta se vai a modificare la stringa puntata da s o l'indirizzo di "pippo" va a finire nella parte di programma che ha chiamato la funzione che ha definito "pippo"...

Ultima modifica di cionci : 22-09-2005 alle 08:26.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 22-09-2005, 08:41   #25
pumax84
Member
 
L'Avatar di pumax84
 
Iscritto dal: Jun 2005
Messaggi: 99
Ah ok, quindi diciamo che è un'agevolazione che offre il compilatore!!! Accidenti, ha contribuito solo a confodermi di più le idee allora...
Ok, ora io ho allocato le variabili dinamiche in questo modo:

char *stringa1 = (char *)malloc(NUMERO_CARATTERI);

Mentre quelle statiche così:

char stringa[NUMERO_CARATTERI];

Devo aggiungere qualcos'altro? Cioè, l'allocazione è giusta o prima di inizializzarle devo aggiungere qualcos'altro?
Dopo queste istruzioni posso chiedere dati in ingresso giusto?

Es.
scanf("%s", stringa1);
scanf("%s", stringa2);

O prima devo fare qualche inizializzazione particolare???

Altre cose che non riesco a spiegarmi è come mai la funzione "gets" a volte prende dati, a volte invece salta direttamente all'istruzione successiva (come se lei non esistesse).
La funzione gets posso usarla sia per stringhe statiche che per quelle dinamiche? E posso usarla con stringhe incorporate in strutture e in liste?

Es.
gets(lista->strutturaDati.stringa)

Perchè ho sempre lo stesso problema... non mi chiede di inserire i dati e il programma salta direttamente all'istruzione successiva.

Ultima cosa è come mai se ho una stringa allocata staticamente e le assegno dei caratteri, non posso fare lo stesso anche per le stringhe allocate staticamente nelle strutture?

Es.
struct struttura{
char stringa2[10];
};
struct struttura laStruttura;

char stringa1[10] = "pippo"; //OK
laStruttura.stringa2 = "pippo"; //ERRORE DEL COMPILATORE

Ciauz

Ultima modifica di pumax84 : 22-09-2005 alle 08:44.
pumax84 è offline   Rispondi citando il messaggio o parte di esso
Old 22-09-2005, 08:56   #26
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Giusto per l'allocazione...comunque dichiara prima i puntatori, ma la malloc falla solo dopo la dichiarazione di tutte le varaibili, questo perchè la malloc non viene considerata come una inizializzazione, ma come una istruzione vera e propria... Quindi soprattutto se i tuoi prof sono puristi del C non fare in questo modo (in teoria è giusto, perchè l'ultimo standard del C prevede la possibilità di dichiarare variabili in qualsiasi punto del programma)...

Per la gets... Per leggere le stringhe usa sempre fgets e non gets, perchè la fgets limita il numero di caratteri in input ad un cifra scelta da te, mentre la gets no...quindi può portare a problemi di buffer overflow... Molti professori testano gli input a bastardi per vedere se hai fatto proprio questi piccoli controlli...

Riguardo al fatto che ti salta le gets: la scanf di default legge lo stream per assegnarlo ad una variabile a partire dal primo carattere diverso da quelli di spazio fino al primo carattere considerato fra quelli di spazio (ivi compreso \n), ma il carattere viene lasciato nello stream, mentre la gets lavora fino al primo \n rimuovendolo dallo stream...quindi puoi ben capire che se fai una scanf prima di una gets la gets trova subito lo \n...

Comunque si puoi configurare la scanf per leggere le stringhe fino allo \n...
In ogni caso ti conviene svuotare lo stream prima di ogni gets o fgets con fflush(stdin);
Attenzione che fflush ha un comportamento non standard per tutte le console...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 22-09-2005, 09:22   #27
pumax84
Member
 
L'Avatar di pumax84
 
Iscritto dal: Jun 2005
Messaggi: 99
Quote:
Originariamente inviato da cionci
Giusto per l'allocazione...comunque dichiara prima i puntatori, ma la malloc falla solo dopo la dichiarazione di tutte le varaibili, questo perchè la malloc non viene considerata come una inizializzazione, ma come una istruzione vera e propria... Quindi soprattutto se i tuoi prof sono puristi del C non fare in questo modo (in teoria è giusto, perchè l'ultimo standard del C prevede la possibilità di dichiarare variabili in qualsiasi punto del programma)...
Capisco... grazie per la dritta allora!!!

Quote:
Originariamente inviato da cionci
Per la gets... Per leggere le stringhe usa sempre fgets e non gets, perchè la fgets limita il numero di caratteri in input ad un cifra scelta da te, mentre la gets no...quindi può portare a problemi di buffer overflow... Molti professori testano gli input a bastardi per vedere se hai fatto proprio questi piccoli controlli...
L'istruzione è identica a quella della gets? Cioè tipo "fgets(stringa)"???

Quote:
Originariamente inviato da cionci
Riguardo al fatto che ti salta le gets: la scanf di default legge lo stream per assegnarlo ad una variabile a partire dal primo carattere diverso da quelli di spazio fino al primo carattere considerato fra quelli di spazio (ivi compreso \n), ma il carattere viene lasciato nello stream, mentre la gets lavora fino al primo \n rimuovendolo dallo stream...quindi puoi ben capire che se fai una scanf prima di una gets la gets trova subito lo \n...

Comunque si puoi configurare la scanf per leggere le stringhe fino allo \n...
In ogni caso ti conviene svuotare lo stream prima di ogni gets o fgets con fflush(stdin);
Attenzione che fflush ha un comportamento non standard per tutte le console...
Ah ecco perchè... ora capisco!!! Per risolvere il problema dopo la scanf non potrei mettere un'ulteriore scanf in modo che legga il ritorno a capo?

Es.
char return;
char *stringa1, *stringa2;
//malloc eccecc
...
...
scanf("%s", stringa1);
scanf("%c", &return);
...
...
gets(stringa2);

Ora sto finendo di fare il debug al programmino d'esame, sono arrivato all'ultimo, ho corretto quasi tutti gli errori, grazie a te!
Ciauz
pumax84 è offline   Rispondi citando il messaggio o parte di esso
Old 22-09-2005, 09:30   #28
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Te l'avevo scritto qualche post fa come si usa...

Io userei la fflush...altrimenti puoi leggere le stringhe anche con la scanf...

scanf("%[\n]s", stringa);

ma soffre dello stesso problema di gets sulla lunghezza della stringa...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 22-09-2005, 09:35   #29
pumax84
Member
 
L'Avatar di pumax84
 
Iscritto dal: Jun 2005
Messaggi: 99
Quote:
Originariamente inviato da cionci
fgets(stdin, 199, temp);
Si scusami, hai ragione... ho ritrovato!

Il programma l'ho completato ed è privo di errori, grazie di tutto!
Alla prossima...
Ciauz
pumax84 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare Antigravity A1: drone futuristico per riprese a ...
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator Sony Alpha 7 V, anteprima e novità della ...
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1 realme GT 8 Pro Dream Edition: prestazioni da fl...
OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum OVHcloud Summit 2025: le novità del cloud...
Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI Care e DisplayPort 2.1a Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI C...
NVIDIA fa marcia indietro, il supporto P...
Addio definitivo alla GeForce GTX 1080: ...
Numeri record per gli iPhone 17: Apple s...
L'Italia del 2025 raccontata da Google: ...
Piaggio lancia Porter NPE, il pick-up el...
Xiaomi L1 a 153€: il proiettore smart 10...
Dopo Amazon, anche il data center di Gro...
Scoppia il caso Meta AI: l'Europa apre u...
Torna in sconto dopo mesi il super table...
Ricarica elettrica senza cavi: in Svizze...
iPhone SE (2016) entra ufficialmente nel...
The God Slayer: Pathea svela il nuovo op...
Spotify Wrapped 2025: il nuovo Wrapped P...
Offerte OPPO per Natale 2025: i migliori...
ROG Matrix RTX 5090: la GPU gaming pi&ug...
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: 16:20.


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