mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c
Titolo: criptare un eseguibile

Qualcuno sa indicarmi come criptare un eseguibile dos in modo che non
possa essere disassemblato?
Grazie
                   Ale

 possa essere disassemblato?
La protezione contro un bravo hacker non esiste. Comunque io mi trovo
molto bene con il PKLite.
EMG

 wrote in message 7u5cvc$j33$1...@nslave1.tin.it...


 wrote in message
K3LN3.13486$i06.1...@typhoon.libero.it...


>Comunque io mi trovo molto bene con il PKLite.
Di cosa si tratta?
Ciao, Fulvio.


E' un "vecchio" programmino della PK qualcosa (quella del
pkzip per intenderci) che viene utilizzato per comprimere
un file eseguibile, mantenendolo pero' ancora eseguibile.
Comprimendo un eseguibili in qesto modo penso vengano
compresse le area leggibili in "chiaro" all'interno del
file, che quindi non sono piu' facilmente leggibili.
Ciao
-- 
Zack
Stefano Zacchiroli
zacc...@cs.unibo.it
za...@comune.budrio.bo.it
ICQ# 33538863
"Never understimate the dark side"

 wrote in message
380F0B64...@students.cs.unibo.it...


Newsgroup: it.comp.lang.c
Titolo: [speroNonOT] variabili e file di configurazione part 2...

premetto che sono molto niubbo del NG, ma spero accoglierete la mia domanda
cmq ;)
Sto studiando un modo di fare il parsing di un file di configurazione (tipo
opzione=valore), e prendendo un po' di codice qua e la' (anche grazie alle
vostre segnalazioni) sono arrivato al punto che ho due char*, uno con il
nome dell'opzione e uno con il valore.
La domanda e':
come faccio ad assegnare ad una variabile un valore, avendo solo il nome
come char*?
risposta: non si puo :)
ma ci sara' uno stratagemma...come fate voi nei vostri programmi?
Grazie, sono un po' a un punto morto :)
Kne'



La soluzione che ho adottato in un mio codice (ovviamente non avevo piu'
di una 20ina di opzioni) e' un array a due dimensioni con stringa e valore
(intero).
Quando mi serviva il valore bastava un piccolo lookup...
Forse non e' il top, ma e' una soluzione "fast food"...


Quello che farei io se avessi tante opzioni e': salvare le coppie 
(nome_variabile,valore) in un array. Poi, implementare una funzione, 
diciamo "char* get_option(char *name)" che fa lookup nella tabella. Ogni 
volta che devo accedere alla variabile, uso la get_option. Ovviamente, 
non e' il top dell'efficienza, e modificare non e' bellissimo, ma direi 
che funziona.
Se ne avessi poche: una bella serie di if ad inizio programma :)
if(strcmp(name, "pippo")==0)
   pippo=value;
else if(strcmp(name, "pluto")==0)
   pluto=value;
else if(strcmp(name, "paperino")==0)
   paperino=value;
else if(...)
   ...
else
{
   fprintf(stderr, "l'opzione %s non e' riconosciuta!\n", name);
   exit(EXIT_FAILURE);
}
-- 
/**
  * Mattia Belletti - Undergraduate student @ 
cs.unibo.it
  * ICQ: 33292311   - email: 
mbel...@cs.unibo.it
  * IRC: BluShine   - site(s): 
http://cs.unibo.it/~mbellett
  * Linux registered user 299762 @ Linux registered machine 213003
  */
Newsgroup: it.comp.lang.c
Titolo: Cvs

Salve...
La domanda non è proprio sul c++ però credo che se c'è qualcuno in grado
di rispondermi sicuramente può trovarsi tra di voi...
Ho installato il CVS e un repository...
Tutto bene, funziona alla grande.
Adesso volevo "montare" su apache2 il software cvs web per permettere la
navigazione via web...
Inutile dire che ho trovato parecchie difficoltà.
Volevo quindi sapere se c'era qualcuno tra voi che avesse esperienza nello
specifico per potergli chiedere eventualmente un aiuto...
grazie
Marco
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 di rispondermi sicuramente può trovarsi tra di voi...
Rimane il fatto che sei OT, e che non ti sei nemmeno degnato di segnarlo 
nel subject...
-- 
Mat/tia Belletti - Undergraduate student @ 
cs.unibo.it
ICQ: 33292311    - email: 
mbel...@cs.unibo.it
IRC: RedGlow     - site(s): 
http://mbellett.web.cs.unibo.it/
Jabber: RedGlow  - Linux registered user 299762 @ machine 213003

Newsgroup: it.comp.lang.c
Titolo: mp3 info

Cerco sorgenti legati alla tecnologia mp3 , o anche documenti sulla FFT
.
Grazie a tutti
    Andrea









 wrote in message
36F92E9B...@numerica.it...


Mi hanno detto che dovresti provare dal motore di ricerca del DEI di Padova:
www.dei.unipd.it
Ciao,
--

Newsgroup: it.comp.lang.c
Titolo: Problema di

void inserisci(struct elemento **p)
 {
 clrscr();
 char nome_art[40];
 char data[10];
 char album[30];
 if (*p==NULL)
  {
*p=(struct elemento *)malloc(sizeof(struct elemento *));
  (*p)->next=NULL;
  puts("\n immetti il nome dell'artista");
  scanf("%s",&nome_art);
  puts("\n immetti il nome dell'album");
  scanf("%s",&album);
  puts("\n immetti la data");
  scanf("%s",&data);
  strcpy((*p)->art.album, album);
  strcpy((*p)->art.nome, nome_art);
  strcpy((*p)->art.data, data);
  }
  else {
         (*p)->next=NULL;
   inserisci(&(*p)->next);
   }
  }
In questa funzioncina ci sono un po di cose che non vanno molto bene:
Anzi tutto:
  scanf( "%s" ,&nome_art);----> 'nome art' e' già un puntatore,quindi
non c'e' bisogno di '&'.Cosi' per tutte le stringhe che hai inserito con
scanf.
-----------------------------------
*p=(struct elemento *)malloc(sizeof(struct elemento *) );
p        =     indirizzo di ( un puntatore a struct elemento) = &(struct
elemento *);
*p      =     puntatore a (struct elemento) = (struct elemento *)
malloc(  sizeof ( struct elemento *)  )    =    allocami la dimensione
di un puntatore [da 2 a 8 byte al massimo],che sono un po pochini per
indirizzare correttamente una struct elemento.
L'allocazione corretta è:
*p= ( struct elemento * ) malloc ( sizeof ( struct elemento )  );
------------------------------------------------------------------------------------
  else {
         (*p)->next=NULL;
----------------------------
   inserisci(&(*p)->next);
   }
cosi' dopo il primo inserimento inserirari sempre al secondo elemento e
non andrai mai avanti
La versione un po piu' corretta:
void inserisci(struct elemento **p)
 {
 struct elemento *app=NULL;
 char nome_art[40];
 char data[10];
 char album[30];
 clrscr();
 if (*p==NULL)
  {
  *p = (struct elemento *) malloc ( sizeof ( struct elemento ) );
  (*p)->next=NULL;
  puts("\n immetti il nome dell'artista");
  scanf("%s",nome_art);
  puts("\n immetti il nome dell'album");
  scanf("%s",album);
  puts("\n immetti la data");
  scanf("%s",data);
  strcpy((*p)->art.album, album);
  strcpy((*p)->art.nome, nome_art);
  strcpy((*p)->art.data, data);
  }
  else {
          app=*p;
          while ( ( *p ) -> next )
                   *p = ( *p ) -> next;
          inserisci(&( *p ) -> next);
          *p=app;
           }
  }
Se posso consigliarti evita funzioni ricorsive.
Ivan Molella.
--
Posted from 
mta03-acc.tin.it
 [212.216.176.34]
via Mailgate.ORG Server - 
http://www.mailgate.org

> fflush(stdin);
  ^^^^^^^^^^^^^^
Nell'altro messaggio ti ho detto che fflush(stdin) non ha un
comportamento definito ?
Provare con e senza fflush:
#include <stdio.h>
void main()
{
   int c;
   int j = 0;
   while (1)
  {
          j=0;
          while ( (c = getchar() ) !=  '\n'  &&  j++ < 10 )
                    {
                    printf("%c", c);
                    }
    /*  fflush (stdin); */    svuota lo stream di standard input se
ancora pieno (borland c++ 2.0)
         printf("1\n");
   }
  }
--
Posted from 
mta14-acc.tin.it
 [212.216.176.45]

Newsgroup: it.comp.lang.c
Titolo: [FAQ] Situazione...

Voglio ribadire l'invito ad Aldo Trianti di farsi sentire.
Nel caso non potesse tradurre le sue sezioni me lo faccia sapere.
Comunico inoltre che se non ho risposta in breve tempo comincio a
renderle disponibili per chi volesse tradurle.
Il lavoro di traduzione e' ancora consistente e quindi rivolgo
l'invito ad altre persone per la traduzione delle sezioni restanti.
La situazione attuale e' la seguente :
 1. Declarations and Initializations		(EMG)             OK
 2. Structures, Unions, and Enumerations        (A. Laforgia)     OK
 3. Expressions                    		(A. Laforgia)     OK
 4. Pointers			                (M. Sarti)
 5. Null Pointers               	        (M. Sarti)
 6. Arrays and Pointers			        (A. Laforgia)     OK
 7. Memory Allocation              		(EMG)             OK
 8. Characters and Strings         		(A. Laforgia)     OK
 9. Boolean Expressions and Variables 		(A. Laforgia)     OK
10. C Preprocessor
11. ANSI/ISO Standard C
12. Stdio
13. Library Functions			        (A. Laforgia)     OK
14. Floating Point     	      			(A. Trianti)
15. Variable-Length Argument Lists		(A. Trianti)
16. Strange Problems                            (A. Laforgia)     OK
17. Style
18. Tools and Resources                         (A. Laforgia) 
19. System Dependencies       			(A. Trianti)
20. Miscellaneous                               (A. Laforgia)


Dove posso trovare gli originali? Se trovo qualche ora potrei partecipare,
magari traducendo l'indice o la prefazione.. :-)
Scherzo, su comp.lang.c non li ho trovati. Hai un link per averli?
Marco

Scherzo, su comp.lang.c non li ho trovati. Hai un link per averli?
Certo, la versione originale e' all'indirizzo :
ftp://RTFM.mit.edu/pub/usenet/comp.lang.c/
Newsgroup: it.comp.lang.c
Titolo: Allocazione dinamica 2D

ciao a tutti...volevo togliermi un piccolo dubbio sull'allocazione 
dinamica di array a 2D cn nXn.
1)si dichiara in questo modo: int *a[];
2)l'allocazione dinamica:
a=malloc(n*sizeof(int*));
for(i=0;i<n;i++)
a[i]=malloc(n*sizeof(int));
3)come si passa ad una funzione questo array? bisogna per forza 
specificarne una dimensione??
4)come scrivo il prototipo di una funzione che accetta array 2D?devo 
spcificare nel prototipo acnhe la dimensione? es. int sum(int *a[10])
compilando cm ho scritto mi da errore...perciò volevo un piccolo aiuto 
teorico. vi ringrazio
-- 
Renato Zero
Provaci a riemergere, da quei sogni che il tuo silenzio ha ucciso...che 
ne sai, dell'origine, delle lacrime, se non ha mai pianto...provaci, a 
scommettere, che al traguardo tu non sarai secondo...agile è 
quest'anima,  non puoi vincerla, non la puoi ingannare più......PROVA A 
PRENDERMI......

 dinamica di array a 2D cn nXn.
In C l'aritmetica dei puntatori e l'indicizzazione di array sono la 
stessa cosa ma puntatori ed array sono due oggetti differenti.
Nel mio post precedente a Dario ho detto che dato un array:
char stringa1[100];
il valore di stringa1 è l'indirizzo del primo elemento dell'array.
Questo, in realtà, non è del tutto vero. La realtà è che il compilatore 
trasforma automaticamente funz(stringa1) in funz(&stringa1[0]).
Per rispondere alle tue domande ti potrebbe essere utile dare partire 
dalle FAQ di comp.lang.c : 
http://c-faq.com/aryptr/aryptrequiv.html
 e 
sperimentare.
Come al solito, se ci sono punti oscuri, posta il codice e ne discutiamo!
Remo D.

io proverei con
int foo( int **arg ) { ..; }
credo la matrix nXn sia un array di puntatori


Newsgroup: it.comp.lang.c
Titolo: come mai? Urgente!!

ho un piccolo problema per il quale, spero, mi potrete aiutare.
Ho scritto un programmino di prova in C, l'ho compilato e fino a lě č andato
tutto bene. Quando perň sono arrivato a lanciarlo, mi č arrivato questo
messaggio:
"bash: code: command not found".
Questo mi accade anche con i programmi in C++, la compilazione va a buon
fine, ma quando vado ad eseguire, mi arriva quel messaggio.
Qualcuno sa a cosa puň essere dovuto questo malfunzionamento?
Saluto e la ringrazio anticipatamente.
Del Mutolo Nicola

 "bash: code: command not found".
  La directory di lavoro corrente sui sistemi Unix ben configurati non
fa parte dei path di sistema, per motivi di sicurezza. Se vuoi eseguire
un file nella CWD, devi richiamarlo con un path relativo o assoluto
valido:
	$ /path/of/file/myfile
oppure
	$ ./myfile
...e la tua domanda sul C e`?
	Alla prossima,
		Marco
Newsgroup: it.comp.lang.c
Titolo: Convertire un client da *nix a win

Ciao a tutti, mi hanno passato un client di chat che devo poter utilizzare
anche sotto windows e non solo sotto linux.
Se vi mando il listato c'č qualche anima pia che mi aiuta?
Grazie
Claudio

 Se vi mando il listato c'è qualche anima pia che mi aiuta?
quanto paghi?
e poi perche' di danno cose da fare che non sei chiaramente in grado di
fare?
Tommy

 ha scritto nel messaggio
news:bv2v1r$hnd$1...@titan.btinternet.com...

Newsgroup: it.comp.lang.c
Titolo: Compilatore C/C++

Ciao a tutti!
Nella mia scuola vogliamo installare un compilatore C/C++ sui computer.
Tocca a me scegliere quale mettere. Il fatto č che abbiamo solo 20 mega a
disposizione (visto che si tratta di spiegare il C ai miei compagni di
classe, al di fuori dall'ordinario programma scolastico).
Secondo voi quale compilatore a 32 bit e free potrei utilizzare?
Avevo pensato al DJGPP della Delorie, che č piccolo, fichissimo, ma tende a
distaccarsi dallo standard, ... e in fondo non mi serve la programmazione
sotto windows (cosi eliminerei l'SDK da scaricare...).
La piattaforma da utilizzare č Windows 2000, con 128 mega di Ram. Che mi
consigliate?
Dome
--
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
PC Brain Official Web Site
http://digilander.iol.it/pcbrain
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

 utilizzare?
Dev cpp, lo zip e' 7 MB, ha ide e usa un'implementazione di gcc, 
abbastanza aderente allo standard

 abbastanza aderente allo standard
Bene! Dove lo trovo?
Grazie,


 Dome
http://www.bloodshed.net/
Cecco

 Bene! Dove lo trovo?
su un qualsiasi motore di ricerca, credo anche nelle FAQ di 
www.programmazione.it
, e su 
http://www.bloodshed.net/devcpp.html

 tende a
BTW, il tizio si chiama 'D.J. Delorie', non e` un'azienda.
Ciao,
-- 
David N. Welton
   Consulting: 
http://www.dedasys.com/
Free Software: 
http://people.debian.org/~davidw/
   Apache Tcl: 
http://tcl.apache.org/
     Personal: 
http://www.efn.org/~davidw/

 La piattaforma da utilizzare è Windows 2000, con 128 mega di Ram. Che mi


 consigliate?
attento che DJGPP non e' un compilatore per windows, ma per dos a 32 bit; e 
non e' vero che tende  a distaccarsi dallo standard, soprattutto se a te 
interessa solo il C e non il C++. Solo che non so se possa funzionare sotto 
win2000; in ogni caso una ottima alternativa e' data da Dev-C++ 
(
www.bloodshed.com
); compilatore e GUI, per windows, in pochissimo spazio; 
trovi una recensione su 
cpp.programmazione.it
ciao Anto
-- 
Antonio Cuni, 19 anni, studente
Brainbench C++ Master: 4.6, higher than 98% of all previous test takers.
C Language: 3.32, higher than 79% of all previous test takers.
Guida C/C++ di Programmazione.it: 
http://cpp.programmazione.it

Solo che non so se possa funzionare sotto win2000;
Credo di si', almeno sotto NT si poteva.
-- 
Andrea Laforgia - walkietalkie(at)
libero.it
Newsgroup: it.comp.lang.c
Titolo: KERNEL : define printk

#define PRINTDEBUG(x)   do { printf(x); } while (0);
Che differenza c'e' tra quanto scritto sopra e un piu' semplice
#define PRINTDEBUG(x)    printf(x)
?
Saluti,
    Mardy

Ciao Mardy,
 > 
Pa.Ped.it
 @ 
www.fastflow.it/~paolop
 ha scritto nel messaggio ...
 > >#define PRINTDEBUG(x)   do { printf(x); } while (0);
 > 
 > 
 > Che differenza c'e' tra quanto scritto sopra e un piu' semplice
 > 
 > #define PRINTDEBUG(x)    printf(x)
 > ?
io il codice l'ho copiato dal kernel, quindi e' "sacro" :-)
A parte questo, immagino si possa capire solo pensando alle ottimizzazioni
che effettua il compilatore quando si trova una riga di codice simile.
Almeno, questa e' la mia giustificazione.
-- 
Pa.Ped, Como
http://www.fastflow.it/~paolop
ICQ: 4755831
VOTE AGAINST SPAM! 
http://www.politik-digital.de/spam/it/
Contro i brevetti software: 
http://petition.eurolinux.org/index_html

 #define PRINTDEBUG(x)    printf(x)
In questo caso nessuna (a meno che printf non sia una macro a sua
volta...). Quel do...while(0) (senza il ';' finale) e` un modo classico
di scrivere le macro multi-statement.
Ciao
 David
-- 
<d.santinoli presso mi . flashnet . it>

 ?
Nessuna
-- 
 Ciao, Bianco.
 Reply to luca.bianco (at) 
tiscalinet.it


In questo caso la differenza e' nessuna, ma ci possono essere altre
situazioni del tipo ( e' una cosa che utilizzo spesso )
#define DPRINTF( x... ) \
	do{ printf("%s():%d@%s: ", __FUNCTION__, __LINE__, __FILE__ ); \
            printf( x ); }while( 0 )
Allora innanzitutto un paio di sottiglieze che funzionano con il gcc ma non
so se siano standard di tutti i preprocessori ( e compilatori )
__FUNCTION__	viene espansa da parte del *compilatore* nel nome della
		funzione
__LINE__	viene espansa da parte del *preprocessore* nel numero di
		riga del file
__FILE__	viene espansa da parte del *preprocessore* nel nome del file
la scrittura x... ( x seguito da tre punti ) e' l'equivalente di un funzione
a a numero varieabile di parametri per le macro; ad x vengono sostituiti
tutti i parametri passati.
Ed ora veniamo al perche si utilizza do{ .. }while(0): Io ho utilizzato due
printf(), per cui avrei potuto fare
#define DPRINTF(x...)  printf(  ); printf( )
pero cosi' in un if avrei avuto dei problemi
if( test )DPRINTF("abc");
solo la prima printf( ) sarebbe stata copera dall'if.
Allora potrei fare un qualcosa del tipo
#define DPRINTF(x...)  {printf(  ); printf( ); }
cosi facendo avrei dei problemi sempre con gli if ... else ...
if( test ) DPRINTF("si" );
else	   DPRINTF("no");
verrebbe espanso in
if( test ){ printf( ); printf("uno" ); }; /* <--- notare il punto e virgola */
else      { printf( ); printf("due" ); };
la sequenza " }; else " e' chiaramente scorretta.
Solo con #define DPRINTF(x...)  do{printf(  ); printf( ); }while( 0 )
l'espansione da luogo a codice compilabile
if( test )
	do{ printf( ); printf("uno" ); }while(0);
else      
	do{ printf( ); printf("due" ); }while(0);
Perl la cronaca l'output tipico della "mia" dprintf e'
f( ){
	DPRINTF("sono passato qua'\n");
}
f():300@file.c: sono passato qua'
Newsgroup: it.comp.lang.c
Titolo: malloc di struct

Con il codice che ho riportato sotto (ï¿œ solo un esempio...), nella 
memoria heap viene memorizzato solo l'indirizzo del nome mentre Mario ï¿œ 
memorizzato nello stack?
 
nero23
 
 
 
 
 
#include <stdio.h>
 
int main(void)
{
     struct dati
     {
         char *nome;
         char *cognome;
     } ;
     typedef struct dati datiImpiegato;
 
     datiImpiegato *impiegato;
     impiegato = (datiImpiegato *) malloc(sizeof(datiImpiegato));
 
     impiegato->nome="Mario";
     impiegato->cognome="Rossi";
 
     return 0;
}

 }
 
Si la 1
No la 2, le costanti sono considerate variabili globali
 

 #include <stdio.h>
 
sicuramente intendevi <stdlib.h>
 
[..]
 
-- 
Vincenzo Mercuri

 }
 
 
Ciao  Manlio
Newsgroup: it.comp.lang.c
Titolo: "Segmentation fault"

Salve a tutti
stavo facendo un programma che usa l'algoritmo di ricerca bucket sort,
ma quando lo faccio girare mi da l'errore "segmentation fault". Cosa
vuol dire?
Grazie
Ciao
--
Shinji-kun
Fan #1 di Natalie Portman
taco...@ats.it
ICQ UIN 49180887

Il messaggio "segmentation fault" indica che il tuo programma ha
effettuato una operazione fuori dai segmenti di memoria assegnati al
programma
Es .
Uso errato dei puntatori,array ecc.
bye bye
luciano !!!


Mmm... allora mi sa che il problema č che il bucket sort richiede un po'
troppa memoria :( Se lo utilizzo con un array di 10 elementi fubziona...
poi posto il codice, cosě magari mi dite se c'č qualche altro errore ^^
Grazie!
Shinji-kun


troppa memoria :( Se lo utilizzo con un array di 10 elementi fubziona...
Non dovrebbe dare segmentation fault per questi motivi.
Tu hai segmentation fault quando cerchi di scrivere in una zona di
memoria che non e' di proprieta' del tuo processo (assegnato al
programma dal sistema operativo, in modo del tutto trasparente).
Esempio: deferenzi un puntatore a NULL.
Mox :)

Mox :)
Shinji-kun

      cifra = d[i] / (int)pow(10, l - 1) % (int)pow(10, l);
scusa patrebbe esserci un numero diviso 0?


Lì non si capisco ma è d[i] diviso (10 elevato alla "elle" - 1), quindi
durante il primo ciclo "elle" vale 1, e quindi 10 ^ 0 = 1, quindi il
risultato dell'espressione è d[i] % 10. Così facendo dovrei trovare la
cifra meno significativa (quella delle unità) del valore contenuto in
posizione i-esima dell'array!
Shinji-kun

  int a[SIZE];
un array di 9999 int, strano!
L'ho ridotto a 99 prima di esegurlo
cmq il tuo programma mi ha fatto aldare in tilt il pc
con finestra blu ecc. 

 Ok, meglio se posto il codice :)
Forse è un caso, ma a me non dà alcun errore, a parte il fatto che non
ordina niente.
Credo, però, che all'array matrice dovrebbe essere reinizializzato dopo
l'esecuzione della funzione rebuildArray(), che ho modificato così:
void rebuildArray(int matrice[][SIZE], int array[])
{
  int x, y, z = 0;
  for (x = 0; x < 10; x++)
    for (y = 0; y < SIZE; y++)
      if (matrice[x][y] != -1) {
         array[z++] = matrice[x][y];
         matrice[x][y] = -1;                    // ho aggiunto questa
   }
}
Così l'array viene ordinato.
Maurizio.

 cifra = d[i] / (int)pow(10, l - 1) % (int)pow(10, l);
Qui c'è qualche altra cosa che non va. Facciamo un caso pratico e supponiamo
che d[i] valga 340 con l=2:
    cifra = 340 / 10 % 100 = 34
mentre cifra dovrebbe essere un numero fra 0 e 9.
Se ho capito bene l'algoritmo, dovrebbe essere:
    cifra = d[i] / (int)pow(10, l - 1) % 10;
Maurizio.

Maurizio.
Shinji-kun

[CUTTO TUTTO]
Funziona!
Grazie mille :)
Shinji-kun

 scrivo il funzionamento!
Ciao
Newsgroup: it.comp.lang.c
Titolo: Spiegazione codice C

Salve, potete spiegarmi passo passo questo codice?
#include <stdio.h>
#include <math.h>
void main()
{
 int decimale;
 unsigned binario, ordine;
 while( 1 )
 {
  printf( "Inserire un numero decimale intero positivo (-1 per uscire): " );
  scanf( "%u", &decimale );
  if( decimale == -1 )
   break;
  else if( decimale < 0 )
   continue;
  binario = 0;
  ordine = 0;
  while( decimale )
  {
   binario += ( decimale % 2 ) * ( unsigned ) pow( 10, ordine++ );
   decimale /= 2;
  }
  printf( "Valore binario = %u\n", binario );
 }
}

 }
Ehm... scusami un attimo... mi sono messo a fare un piccolo debug mentale...
ma sta roba cosa DOVREBBE fare?! Convertire un numero decimale in binario?!
Ma secondo me non funziona per niente!!! ^_^
Dome

Ma secondo me non funziona per niente!!! ^_^
No, crea un decimale composto solo di uno e di zeri e poi lo stampa...
almeno finche' non va' in overflow la variabile "binario" :)
Mox

 almeno finche' non va' in overflow la variabile "binario" :)
Giusto, però non funziona lo stesso perché non tiene conto degli
arrotondamenti inevitabili quando si converte un double in unsigned. Così
l'istruzione:
    (unsigned) pow(10, 2)
potrebbe riportare 99 e non 100.
Maurizio.
Newsgroup: it.comp.lang.c
Titolo: chiamare programmi da altri programmi sotto dos

Io uso il compilatore DJGPP (GNU) sotto Dos/win
come faccio a chiamare un eseguibile e a passargli
dei parametri dall'interno di un programma c?
Grazie mille
Matteo

 un programma c?
  Ci sono due possibilita`.
  1. Sostituisci il processo corrente con uno nuovo, mediante 
     le funzioni della classe exec*();
  2. Fai eseguire il programma dall'interprete dei comandi del DOS 
     con la funzione system().
  In ambiente UNIX -- e quindi non nel tuo caso, probabilmente -- la
soluzione (1) permette al processo chiamato di ereditare svariate
cosucce utili dal chiamante. Nel caso (2), invece, il processo chiamato
non e` figlio del chiamante ma della shell.
	Alla prossima,
		Marco

 Marco

 E' possibile ragionare per fork di processi in dos come in Unix? Davvero?
No, non si puo'.
--
 Ciao, Luca.
 Reply to 
luca....@tiscalinet.it

  Ciao, Luca.
Ah, ecco...

Newsgroup: it.comp.lang.c
Titolo: Conversione Esandecimale

Come si fa la conversione HEX->DEC e viceversa??
Mi interessa prima come farlo io poi come farlo fare al C.
Tnk 10000000

mah, fondamentalmente si tratta di pensare ai numeri cosi...
100 in decimale è 0 x 10 alla 0, 0 x 10 alla 1 e 1 x 10 alla 2
Idem in esadecimale, binario... :)

Spiegati meglio.....
"Milacku" <send...@here.lol> ha scritto nel messaggio
news:Nq7xb.12443$AX1.4...@news1.tin.it...


 ha scritto nel messaggio
news:Xt7xb.12467$AX1.4...@news1.tin.it...

Allora:
980 in decimale è uguale a:
0 * 10 ^ 0 + 8 * 10 ^ 1 + 9 * 10 ^ 2, infatti se provi a svolgere i calcoli
hai 0 + 80 + 900, che è proprio 980.
Nel sistema esadecimale il sistema è simile, semplicemente si aggiungono le
lettere A B C D E F che puoi pensare come i numeri 10,11,12,13,14,15.
Quindi, ad esempio il numero in hex
3AB2 è equivalente a : 2 * 16 ^ 0 + 11 * 16 ^ 1 + 10 * 16 ^ 2 + 3 * 16 ^ 3,
quindi svolgendo i calcoli 15026 in decimale
Newsgroup: it.comp.lang.c
Titolo: liste

ragazzi sto imparando il c perchè devo fare un esame, tutto ok fino alle
liste, ho 3 manuali e non riesco a capire come cavolo fare.
Un sito con tutti i passaggi già implementati?
tipo inserimento, cancellazione...
grazie

 wrote in message
news:sGl3c.23928$O31.1...@news4.tin.it...


Ti ringrazio molto!
credo che cmq non sia tanto la lista, quanto la difficoltà nel capire i
puntatori!
facciop confusione quando sono
*int
e quando sono
int *
che cavolo di differenza c'è?
"kikko" <send...@here.lol> ha scritto nel messaggio
news:LNv3c.27072$O31.1...@news4.tin.it...


 int *
Hai sbagliato di scrivere. Analizziamo:
Innanzitutto un po' di notazione. La notazione Hungarian stabilisce che i
puntatori hanno nomi che iniziano per p minuscola. Visto che non ho voglia
di fare confusione userò questa notazione :-)
int a = 5;
int *pa = &a;
Ora abbiamo due variabili: a e pa.
a è un intero e contiene 5.
&a è l'indirizzo di a, cioè la casella di memoria che contiene il valore a.
pa è un puntatore e punta ad a (qualunque sia il valore di a).
*pa è il valore contenuto nella casella di memoria puntata da pa, in questo
caso 5.
Osserva che in questo caso abbiamo:
pa = &a
*pa = a
*&a = a
&*pa = pa
& e * sono due operatori opposti.
Possiamo scrivere:
int a = 5;
int *pa = &a;
int c = *pa; // metti in c il valore puntato da pa, cioè in questo caso il
valore di a
*pa = 9; // metti nella casella puntata da pa (in questo caso a) il valore
9.
*pa = a; // metti nella casella puntata da pa (in questo caso a) il valore
contenuto in a (in questo caso è come fare a = a)
a = *p // metti in a il valore contenuto nella casella puntata da pa (in
questo caso a). (in questo casoè come fare a = a)
Attenzione che è sbagliato (e impossibile) fare a = pa o pa = a. E' come
mescolare pizza e fichi!
Altra attenzione: il significato che ha l'* in int *pa è diverso da quello
che ha *pa = 5;
Nel primo caso lo puoi vedere come int* a cioè come "dichiarazione di una
variabile a del tipo puntatore a int". Nel secondo caso è "metti nella
casella puntata da pa il valore 5".
Un giorno scoprirai cosa sono int **ppa e ***pppa :-)
--- bye

 wrote in message
news:IKH3c.30458$O31.1...@news4.tin.it...


GRazie ancora!!
non hai per caso dei pdf, o delle dispense che vi avevano dato di questa
roba?
mi sarebbero molto utili!
Grazie!
"kikko" <send...@here.lol> ha scritto nel messaggio
news:6pT3c.27871$z23.1...@news3.tin.it...


 wrote in message
news:UPX3c.34689$O31.1...@news4.tin.it...

Newsgroup: it.comp.lang.c
Titolo: Elenco indeterminato di argomenti (come in printf())

So che bisogna usare stdarg.h con le macro va_start(), va_end(), va_arg
(), va_copy().
Però perchè il seguente (semplicissimo) frammento non mi funziona?
Voglio creare una funzione foo() che faccia esattamente la stessa cosa
di printf().
#include <stdio.h>
#include <stdarg.h>
void foo(char* text, ...);
void foo(char* text, ...)
{
  va_list args;
  va_start(args, text);
  printf(text, args);
  va_end(args);
}
int main()
{
  int i = 10;
  foo("La variabile i vale %u\n", i);
  return 0;
}
Invece di stampare il messaggio
"La variabile i vale 10"
mi stampa
"La variabile i vale 3221223972".
Non so da dove venga quel numero, forse è l'indirzzo della
variabile...
Se al posto di "int i = 10" ci piazzo un char *i = "Hello world" il
risultato che ottengo è
"La variabile i vale NULL"
Dove sbaglio?
gcc 4.0.1, compilato per i686-apple-darwin9 su Leopard.

Ah, dimenticavo.
Nel secondo esempio (char *i) cambio il %u in %s.
Ovviamente.

 }
non puoi usare printf passandogli un va_list. Devi usare
la funzione vprintf che e' identica a printf ma come
secondo parametro ha un va_list
ciao
Giacomo

 Giacomo
ciao
Darkbyte

Newsgroup: it.comp.lang.c
Titolo: SDL::immagine->come la faccia muovere?

grazie alla pazienza di molti son finalmente riuscito a far funzionare un
po' di SDL!
son riuscito a caricare un background e un'immagine in primo piano con
trasparenza.
ho anche imparato a gestire gli eventi!
pero' non capisco come far muovere un'immagine che ho caricato... ho pensato
di cancellarla con SDL_FreeSurface() e poi ridisegnarla, ma non va..
la strada è giusta, ma ho sbagliato qualcosa nel codice ? o si puo' cambiare
le coordinate e dirgli "aggiorna" ??
qualcuno mi puo' aiutare ?
grazie mille
Fra

volevo solo capire se nessuno mi risponde perchè non usate SDL e usate altro
(e in questo caso: cosa ??) o se non programmate grafica col C e basta.
grazie :D

bhe.. ho anche postato da 2 ore... pensavo di aver postato ieri sera.. eheh
sorry!

"FRaNCeSCo" <?@?.?> ha scritto nel messaggio
news:ogi8b.51149$hE5.1...@news1.tin.it...

spostati su it.comp.giochi.sviluppo o it.com.os.linux.development o
it.comp.programmare.win32 ... vedi tu quale secondo te' appare piu'
pertinente a quello che stai sviluppando ... questo news e' sconsigliato ;-)
ciao

 pertinente a quello che stai sviluppando ... questo news e' sconsigliato
;-)
ci avevo pensato, ma volevo aspettare un attimo prima di fare crossposting..
cmq ho provato su it.comp.giochi.sviluppo
vedremo..
grazie

 Vincenzo
Newsgroup: it.comp.lang.c
Titolo: hitachi, registri e iar

Salve,
sto utilizzando un hitachi 3644 con compilatore iar.
Ho bisogno di allocare 2 o 4 variabili nei registri, per problemi di
velocità.
Le ho provate tutte ma non so come dire al compilatore di allocare 4
variabili (ne ha 7 liberi da 16 bit) nei registri.
Il compilatore continua a mettere le variabili in RAM.
void funzione(void)
{
 char aux;
 aux =1;
 aux++;
}
Questo genera comunque una variabile nello stack o in RAM!
Stessa cosa se utilizzo l' register
void funzione(void)
{
 register char aux;
 aux =1;
 aux++;
}
Grazie in anticipo...
Sent via Deja.com 
http://www.deja.com/
Before you buy.

 Il compilatore continua a mettere le variabili in RAM.
Hai provato ad attivare le ottimizzazioni del tuo compilatore?
EMG

> Hai provato ad attivare le ottimizzazioni del tuo compilatore?
Si, anche se non conosco a fondo il significato di tutte.
Quello che trovo in Hitachi Workbench (l'ambiente di sviluppo), sono due
opzioni: (compilator) Optimisation for speed e (Processor Configuration)
 Destroy at funcion Call. Le ho provate.
Chiaramente quando ottimizzo perdo la visibilità sull'emulatore ma i
tempi misurati della routine rimangono gli stessi.
In realtà i problemi sono due:
1) Dire al compilatore di mettere, il più possibile le variabili locali
nei registri.
2) Dire al compilatore QUALI variabili mettere nei registri.
Potrei risolvere il tutto scrivendo la funzione in assembly, ma dovrebbe
esserci la possibilità, più elegante e rapida, anche in "C".
Ciao


esserci la possibilità, più elegante e rapida, anche in "C".
Dipende dalle implementazioni (il BC++ 5.02 per esempio possiede la
keyword "__fastcall" che serve proprio a questo).
Il massimo che un compilatore conforme all'ANSI C puo' offrirti e' la
keyword "register", ma che non assicura che la variabile venga posta
effettivamente in un registro del processore.  L'unica soluzione al
problema credo sia proprio la riscrittura del codice in assembly.
--------------------------------------------------------
* Andrea Laforgia        (
andrea_...@bigfoot.com
) *
--------------------------------------------------------

Newsgroup: it.comp.lang.c
Titolo: Aiuto programma

Ciao a tutti.
C'č qualcuno che potrebbe dirmi perchč il programma in allegato non
funziona??
Lo scopo del programma č quello di leggere i dati nella sezione Entities,
dove 10, 20, 30 sono le coordinate cartesiane e 40 č il raggio, la quale si
trova alla fine del file DXF (allegato). Ora dovrebbe ordinare un albero
binario secondo il raggio con criterio r>=rrad DX, r<rrad SX e annullare il
raggio per un dato Range di valori.
Mi richiede il nome del file e poi si ferma, anche se sembra che stia ancora
lavorando.
Grazie a chiunque voglia aiutarmi.
Ciao, Stefano.
begin 666 Allegati.zip
<encoded_portion_removed>
end

 funziona??
[...]
Non postare allegati, posta il codice in linea.
--
 Ciao, Luca.
 Reply to 
luca....@tiscalinet.it
Newsgroup: it.comp.lang.c
Titolo: problema con Xterm

Da quando ho reinstallato la Slack ho un fastidioso prob. che riguarda
Xterm.. non riesco a digitare i num.!
scrive dei caratteri a caso quando cerco di dgt qualche numero, ma la
cosa strana è che solo i numeri dalla parte destra della tastiera!!
qualcuno sà dirmi il perchè??
grazie
bye

Over wrote:

 Sei altamente OT.
Questo e' it.comp.lang.c non it.comp.qualunquetipodiproblemainformatico!!!
Ivan Molella

Newsgroup: it.comp.lang.c
Titolo: i++ e getchar()

...
for(i=0; i<10; i++){
  c[i]=getchar();
  printf("%c\n", c[i]);
}
...
OUTPUT:
...
a
     (è un newline)
     (è un newline)
b
     (è un newline)
     (è un newline)
c
     (è un newline)
     (è un newline)
(fine output e ritorno alla shell)
Il problema si pone anke con scanf().
PERKE'???
tisico

}
perche' getchar,bufferizza, quindi oltre al carattere digitato contiene
anche NewLine
for(i=0; i<10; i++){
  c[i]=getchar();
  printf("%c\n", c[i]);
  while( getchar() != '\n' )    /*    Svuota il buffer    */
}

   while( getchar() != '\n' )    /*    Svuota il buffer    */
	;
	^
Ciao ciao,
Andrea
-- 
"...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and 
 the Ugly)."
(by Matt Welsh)

Newsgroup: it.comp.lang.c
Titolo: SQL e C

Dove posso trovare informazioni su come interagire su un database tramite un
programma in c attraverso l' sql?
Grazie

programma in c attraverso l' sql?
Ci sono 2 modi per farlo:
- delle particolari funzioni che ti facciano da interfaccia verso il
DB (oppure verso ODBC o JDBC), e non saprei dove indirizzarti perche'
non me ne sono mai interessato.
- attraverso i preprocessori SQL che ti vengono forniti con i vari
DBMS: tu scrivi particolari istruzioni precedute da $ (mi pare sia
questo il carattere riservato) e questo, esattamente come il
preprocessore C, sostituisce le varie direttive con le istruzioni per
leggere l'SQL. Trovi documentazione specifica assieme ai manuali dei
DBMS.
-- 
Mox
"Trust the programmer."
"Don't prevent the programmer from doing what needs to be done."
"Keep the language small and simple."
"Provide only one way to do an operation."

Newsgroup: it.comp.lang.c
Titolo: scandir e struct stat

Ho una domanda a cui non so dare risposta, funziona ma non capisco
perche'?
Dopo aver fatto uno scandir, voglio sapere se i file sono una dir; ecco
la parte di codice:
char curfile[100];
struct stat *buf = curfile; /*ecco qui il punto*/
...
stat (esp[cnt]->d_name, buf);
if (S_ISDIR (buf->st_mode)
    ...
Il punto e' che funziona, da solo un warning in fase di compilazione.
La mia e' solo curiosita'.
Grazie
--
        Giancarlo Rosso

if (S_ISDIR (buf->st_mode)
              ^^^^^^^^^^^^
e qui "buf.st_mode".
-- 
Saluti,
    Mardy
Newsgroup: it.comp.lang.c
Titolo: help

Devo scrivere un'applicazione MS Dos che al momento del boot prenda il
controllo della macchina e impedisca di accedervi fichè non viene immessa
una password che viene confrontata con altre messe in un file criptato ed
invisibile; se il confronto tra la password digitata e quelle in elenco  è
positivo la macchina prosegue il boot e scrive in un file di log la password
utilizzata e a che ora è avvenuta l'operazione.
Nel caso la password sia errata la macchina dà tre tentativi per eventuali
sbadati e cmq scrive le password sbagliate nel file di log con un flag di
operazione fallita alla data ora, alla quarta volta la macchina fà il reset.
Giuro che non sò nemmeno come confrontare due stringhe visto che finora
conosco solo funzioni per confrontare caratteri.
Aiuto ;-)


-----------== Posted via Deja News, The Discussion Network ==----------
http://www.dejanews.com/
       Search, Read, Discuss, or Start Your Own

Newsgroup: it.comp.lang.c
Titolo: <no subject>

Ti ringrazio per avermi risposto ma...non ho capito! 
Io devo fare in modo che lex e yacc POSSANo ridefinire le stesse 
variabili e funzioni, ma in modo diverso, ossia ogni file lex e yacc 
deve poter usare i propri lex.yy.c e y.tab.c. Il mio problema è 
riuscire a compilare insieme un mio file e tutti i vari files oggetto 
generati con i files lex e yacc suddetti. Facendo come dici tu non 
impedirei la ridefinizione delle variabili e delle funzioni?
Ciao
-- 
Posted from 151.24.150.134 by way of 
smtp3.libero.it
 [193.70.192.53] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto nel messaggio
news:G9DMQD$IGyzrBW9fuW3BdrlXGnjBQ...@libero.it...


Newsgroup: it.comp.lang.c
Titolo: c e parser

ciao a tutti
sto scrivendo un programma interattivo
e per renderlo flessibile ho realizzato un parser
rudimentale tuttavia volevo sapere se in rete
e' disponibile qualche risorsa su come realizzare
un parser generico in C, quali strutture dati e funzionalita'
occorre implementare.
Grazie Marco

Ciao,
i parser XML possono essere una fonte di idee. Prova a dare un'occhiata
all'object model e a metodi e proprieta esposti da quello Microsoft.
Saluti,
Bob Rock
"marco" <ma...@darkstar.home> wrote in message
news:20010310.173857...@desix.home...



esistono vari tool per 'scrivere' parser:
lex & yacc ( flex & bison sotto linux o tools GNU )
pccts
puoi cercare in rete per 'recursive descendent parser' e dovresti
trovare le spiegazioni per buttare giu' i parser 'a manina'
tipicamente i parser si compongono di due unita' logiche , lo scanner
lessicale che si interessa di separare lo stream di testo in token ( ci
pensa il lex ) e lo scanner grammaticale che invece riconosce la
grammatica ovvero le sequenze di token valide ed agisce di conseguenza
Newsgroup: it.comp.lang.c
Titolo: Portabilità

Qual è il modo standard  per dichiarare che un puntatore non punta a nulla?
Io uso due compilatori (Turbo C 2.01 e Dev-C++).
Il primo non mi accetta la sintassi int* puntatore = 0; e quindi io risolvo
con int*puntatore = NULL; , mentre il secondo non mi accetta NULL ma solo
0.
Grazie.
 


Almeno la prima dovrebbe essere accettata da qualunque compilatore
standard complaint. Al limite prova con
int *puntatore = ( int * ) 0;
anche se non è il modo migliore.
EMG

 0.
Sono entrambe corrette.
--
Marco Iannaccone     
marc...@tin.it
ICQ: 18748121           Tolkien
"I've... seen things you people wouldn't believe. Attack ships on fire off
the shoulder of Orion.
I watched C-beams... glitter in the dark near the Tanhauser Gate. All
those... moments will be lost... in time..., like... tears... in... rain."
FAQ it.comp.lang.c++: 
http://www.programmazione.it/linguaggi/c/lang_faq.htm
FAQ it.comp.lang.c: 
http://www.programmazione.it/linguaggi/c/itcomplangc.htm

Qual č il modo standard  per dichiarare che un puntatore non punta a nulla?

Il Turbo C 2.01 e' sicuramente precedente allo standard 89.
In ogni caso, 0 e' il valore piu' giusto, perche' viene implicitamente
castato nel tipo puntatore considerato.
Nel secondo caso risolvi con :
int *puntatore = (int*)0 ;
Perche' e' evidente che NULL, nel secondo caso, e' stato definito
come:
#define NULL ((void*)0)
E quindi l'assegnazione produce un errore di cast incorretto (in C++),
mentre in C non e' cosi'.

Newsgroup: it.comp.lang.c
Titolo: Aiuto !!! come si stampa immagini CGA in C ?! Disperato !!

Cerco un esempio in C che mi permetta di stampare da DOS
su una stampante a getto d'inchiostro una qualsiasi immagine visualizzata
su un display monocromatico in risoluzione CGA 640x200 o 320x200 a 2 colori.
Il metodo che io uso per stampare è quello di aprire l'output della
stampante come
si apre un file in C ( fopen ("PRN","w")).
Grazie, anticipatamente per l'aiuto!!

Nico Ferro wrote:

Sei  OT su questo NG  prova su:  it.comp.programmare
--
Ivan Molella
__LINUX__ the choice of the __GNU__ generation
icq# 97960484
Newsgroup: it.comp.lang.c
Titolo: leggere da fd con timeout

Salve, per leggere da un fd con timeout, esiste qualche alternativa alla
poll (e ovviamente alla select)?
grazie
Fabio


inanzitutto quella di passare su it.comp.os.linux.development ;)
-- 
Mat/tia Belletti - Undergraduate student @ 
cs.unibo.it
ICQ: 33292311    - email: 
mbel...@cs.unibo.it
IRC: RedGlow     - site(s): 
http://www.cs.unibo.it/~mbellett
Linux registered user 299762 @ Linux registered machine 213003

Newsgroup: it.comp.lang.c
Titolo: Standard error output

Salve a tutti.
Vorrei sapere se e' possibile reindirizzare l'output di un compilatore
invocato da riga di comando (uso egcs - mingw32) verso un file di testo, con
un comando del tipo di " > file.txt " del dos (che pero', correggetemi se
sbaglio, funziona solo con lo standard output), o in altro modo.
Grazie


In un sistema UNIX potresti scrivere
  cc nomefile.c >& pippo
ottenendo nel file pippo i messaggi di errore.
Con DOS/Windows non so.

Newsgroup: it.comp.lang.c
Titolo: Come compilare in C per Windows con BCB3?

Come posso compilare un normalissimo programma in C per Windows con il
compilatore BCC32 ossia quello del C++ Builder 3?
Accluso trovate un semplicissimo programma di esempio
L'output del compilatore č:
Error: Unresolved external '_main' referenced from
C:\PROGRAM FILES\BORLAND\CBUILDER3\LIB\C0X32.OBJ
Chi sa illuminarmi?
TobiX
begin 666 ciao mondo.c
<encoded_portion_removed>

compilatore BCC32 ossia quello del C++ Builder 3?
Per cortesia : non inviare file in allegato ai messaggi.
Nella gerarchia it.* non e' consentito !!!
Andrea Laforgia

 Nella gerarchia it.* non e' consentito !!!
sorry... pensavo che un piccolo file di testo non desse problemi...
e che fosse più comodo che non inserito nel corpo del messaggio
TobiX


ICQ #34602650

 manuale (o la guida) avresti sicuramente una risposta in pochi minuti.
negativo
ho sfogiato per settimane l'help, prima di scrivere al NG (ovviamente ;-)
TobiX

Newsgroup: it.comp.lang.c
Titolo: scanf per leggere stringa che includa spazi

.. altra cosa che col kerigan non è chiara:
se voglio prendere in input con scanf una stringa di cui so
esattamente la lunghezza, inclusi gli spazi <sp>, come faccio?
per esempio, se l'input è  25<sp><sp>a<sp><sp>50
qual'è l'istruzione scanf per prendere
       25 (intero), 
       <sp>a<sp> (stringa di 3 caratteri, senza gli
                  altri due <sp> che la delimitano),
       50 (intero) ?
e per prendere 
    25 (intero), 
    <sp><sp>a<sp><sp>, (la stringa di prima coi 2 <sp> che la
delimitano)
    50 (intero) ?
grazie.
M.L.

    50 (intero) ?
scanf("%d%[ a-zA-Z]%d", &a, str, &b);
Per ricondurti al caso sopra:
memmove(str, str + 1, 3);
str[3] = '\0';
La cosa e` abbastanza sporca ed e` da fare solo se sei assolutamente
certa [1] che l'input e` valido.
In generale io eviterei la scanf per conversioni complesse. Usa
piuttosto fgets e poi fai il parsing del buffer.
Luca
[1] Ie. se l'input e` stato validato in precedenza.
-- 
Home: 
http://kronoz.cjb.net
Tentare e` il primo passo verso il fallimento.
Homer J. Simpson
Newsgroup: it.comp.lang.c
Titolo: Switch-case

Ehm....lo so che forse vi sebrera' una cosa elementare, ma uso il c da due
giorni quindi....
Nel seguente programma non riesco a far bloccare le funzione dello
switch-case, mi spiego meglio, anche se premo 1 o 2 alla prima domanda, alla
fine mi compare sempre la funzione di default.....inoltre il calcolo non e'
giusto.
Sapreste dirmi cosa sbaglio?
/*Programma di prova della funzione Switch-case.
  Esempio di programma che calcola area o perimetro di un quadrato*/
#include <stdio.h>
main ()
{
 int l,r,a;
 printf("Inserisci cosa vuoi calcolare, area=1,perimetro=2:");
 scanf("%d",&a);
 printf("Inserisci la misura del lato:");
 scanf("%d",&l);
 switch(a)
 {
 case '1':
   r=l*l;
   break;
 case '2':
   r=l*4;
   break;
 default:
   printf("devi inserire 1 o 2");
   break;
 }
 printf("Risultato:%d",r);
}
Grazie in anticipo a tutti!

 case '2':
[snip]
a e' un intero, '1' e '2' sono dei char, devi usare 1 e 2 senza apici
ciao, acc.   
a...@libero.it

 Grazie in anticipo a tutti!
---
Ramses
---
icq:39860665
http://knowledgeparty.cjb.net
http://evilz0ne.cjb.net

Grazie, mi siete stati utilissimi.....spero di non cadere piu' in errori
cosi' banali! ;-)
Newsgroup: it.comp.lang.c
Titolo: Funzione che richiama altre funzioni

Dovrei cronometrare alcune funzioni scritte da me.
Ognuna di queste funzioni è diversa sia per input che per output.
Vorrei scrivere un'unica funzione che, a seconda di quanto passato in input,
richiami una delle funzioni da cronometrare. 
Come si può fare?
        Grazie

 ha scritto:

Con uno switch? Non capisco dove sia il problema... puoi spiegarti
meglio?
Luca
-- 
Home: 
http://kronoz.cjb.net
Windows NT crashed.
I'm the Blue Screen of Death.
No one hears your screams.

 meglio?
Hai ragione scusa...
Non voglio fare qualcosa di "statico", tramite switch.
Vorrei creare una funzione "cronometro( )", in modo tale che, se volessi
cronometrare una qualsiasi funzione, basterebbe fare
cronometro(qualsiasiFunzione), senza necessariamente aver specificato
quella funzione all'interno dello switch della funzione cronometro....
E' un po' più chiaro?


Se le funzioni che devi trattare hanno tutte la stessa signature, puoi 
risolvere con i puntatori a funzione; ad es., prendiamo che tutte le 
funzioni, banalmente, prendano void e ritornino void:
typedef void (*crono_function)(void);
double cronometro(crono_function f)
{
   double ris;
   <AVVIA CRONOMETRO>
   f();
   ris = <CALCOLA CRONOMETRO>;
   return ris;
}
Su come implementare l'avvio del cronometro, e il suo calcolo, guarda 
svariati post fatti in precedenza su questo newsgroup, se ne e' parlato 
spesso e volentieri ;). Cmq sappi che lo standard non offre moltissimo.
Se invece le funzioni che tratti non hanno la stessa signature, non puoi 
usarle direttamente... pero' puoi usare degli 'adattatori', e poi 
sfruttare quelli. Prendiamo che tu voglia misurare la printf:
void adattatore_printf(void)
{
   printf("Stampa!\n");
}
E poi userai adattatore_printf da passare a 'cronometro'.
-- 
Mat/tia Belletti - Graduate student @ 
cs.unibo.it
ICQ: 33292311    - email: 
mbel...@cs.unibo.it
IRC: RedGlow     - site(s): 
http://mbellett.web.cs.unibo.it/
Jabber: RedGlow  - Linux registered user 299762 @ machine 213003

Mattia Belletti wrote:

Grazie mille.

Newsgroup: it.comp.lang.c
Titolo: (",) Do You Want To Know For Sure You Are Going To Heaven?

http://www.want-to-be-sure.blogspot.com
 << Click On Link

http://www.want-to-be-sure.blogspot.com
 << Click On Link

http://www.want-to-be-sure.blogspot.com
 << Click On Link

http://www.want-to-be-sure.blogspot.com
 << Click On Link

http://www.want-to-be-sure.blogspot.com
 << Click On Link

http://www.want-to-be-sure.blogspot.com
 << Click On Link

http://www.want-to-be-sure.blogspot.com
 << Click On Link