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

Ciao a tutti,
mi potete fare il favore di provare a compilare i seguenti codici e di
comunicarmi sia gli eventuali errori - compresi i warning - del compilatore
e i vari messaggi del linker.
Io ho provato e questi sono i risultati:
Sul gcc del DJGPP:
int main(void)
{
      extern int a;
      a = 10;
      return 0;
}
char a = 10;
-> tipo non corrispondente nella re-declaration
Sul gcc del Dev-C++ - compilato con le opzioni Ansi C -:
-> nessun errore
Sul Borland C:
-> errore nella ridichiarazione.
Ciao.

AGOZ wrote:

Secondo le mie conoscenze...correggetemi se erro......
Con extern indichi al compilatore che da qualche altra parte esiste una 
dichiarazione della variabile intero a, ma dopo il main invece dichiari 
a come char anziche'  int.
Percio' risulta un errore a tempo di compilazione....!!!
Per quanto riguarda Dev-C++ non ti so' dire..!!!
bye bye
Luciano

> Secondo le mie conoscenze...correggetemi se erro......
Personalmente mi trovo concorde con quanto hai detto
perň mi stupisce che un compilatore come il gcc, che risulta essere tra i
piů standard, abbia un comportamento cosě strano.
Ciao.

Newsgroup: it.comp.lang.c
Titolo: Aggiungere un elemento ad una lista.

Salve a tutti,
ho un problemino con le liste. Ho scritto due procedure uan che crea una
lista vuota e una che
inserisce un elemento in coda alla lista.
Il problema è nella procedura inserisci_coda  nel corpo else dell'if.
Il compilatore mi segnala un'incompatibilità tra i puntatori passati ...
cosa ho sbagliato ?
grazie a tutti
Snakeeyes
**  inizio codice ***
#include <stdlib.h>
#include <stdio.h>
struct tipo_lista{                 // creazione lista
  char dato;
  struct t_lista *next;
};
typedef struct tipo_lista t_lista;
typedef t_lista  *link;
link crea_lista(void);
link inserisci_coda(link L, char dato);
int vuota_lista(t_lista *L);
int main(void);
// *** FINE DICHIARAZIONI
link inserici_coda(link L, char n)
{
  link nuovo, aux;
  nuovo = malloc(sizeof(t_lista));
  nuovo -> dato = n;
  nuovo -> next = NULL;
  aux = L;
  if((vuota_lista(L)) == 0){
    L = nuovo;
  }
  else{
    do{aux = aux -> next;}while(aux -> next != NULL);
    aux -> next = malloc(sizeof(t_lista));
    aux -> next = nuovo;
    return aux;
  }
}
link crea_lista(void)
{
  link  mia_lista;
  mia_lista = malloc(sizeof(t_lista));
  mia_lista = NULL;
  return mia_lista;
}
int vuota_lista(t_lista *L)
{
  if(L == NULL)
    return 0;
}
int main(void)
{
  link lista;
  lista = crea_lista();
  printf("\n%d\n", vuota_lista(lista));
  lista = inserisci_coda(lista, 'd');
}

}
Cosa torna main ?
HTH
Andrea
--
Andrea Griffini, Programmer
http://www.netservers.com/~agriff

Grazie mille per le correzioni !
ciao
Nick
Newsgroup: it.comp.lang.c
Titolo: Potete ripostare il messaggio sull'equivalenza puntatori-vettori? per favore

Mi scuso col NG ma ho perso i vecchi messaggi che avevate postato, dove si
parlava della "non equivalenza" tra puntatori e vettori.
In particolare mi interessava il messaggio in cui erano descritti i tre casi
in cui il nome di un vettore non decade nel puntatore al suo primo elemento.
Se non volete ripostarlo sull'NG, mandatemelo in e-mail 
ili...@tin.it
Scusate e grazie
--
________________________________
Togliete NoSpaM per rispondermi
bye Brain

...


 in cui il nome di un vettore non decade nel puntatore al suo primo elemento.
I tre casi sono:
1. L'operatore sizeof().
2. L'operatore & (address_of).
3. La costante stringa come inizializzatore.
EMG

Newsgroup: it.comp.lang.c
Titolo: [OpenGL] Installazione glut

Salve.
Qualcuno di voi ha installato la libreria di Utility OpenGL GLUT con Borland
C++ Builder 5?
Quando compilo un progetto che include la libreria genera un errore.
Ciao. Andrea

Quando compilo un progetto che include la libreria genera un errore.
sei OT
e cmq prova a controllare gli include path e quelli delle librerie
--
Rhymes
rhy...@myself.com
" ride or die "

 e cmq prova a controllare gli incude path e quelli delle librerie
il problema e' che genera un errore sull'extern C del glut.h


dove posso postare il messaggio?
it.comp.programmare


Newsgroup: it.comp.lang.c
Titolo: Richiamare una procedura pascal da un programma c

Il problema sembra dei più classici ma non riesco a trovare una soluzione.
Ho un programma scritto in pascal. Devo utilizzare il nucleo di questo (una
procedura che opera una conversione di una stringa in un'altra) all'interno
di un programma C. Il problema è che la versione 7 del Borland Pascal che è
l'unica che posso usare non può generare file .obj: ho cercato ma sono
riuscito a creare soltanto file .tpu
Ho pensato di compilarlo come dll, purtroppo però il programma, che è
scritto malissimo e quindi è difficilmente modificabile, utilizza istruzioni
non supportate dalla compilazione per windows (funziona solo con la modalità
reale e protetta).
Qualcuno ha qualche idea?

reale e protetta).
Preciso meglio. Innanzitutto non è una istruzione ma naturalmente una
procedura (mark). Inoltre il programma viene compilato regolarmente ma dà un
errore in fase di esecuzione.

reale e protetta).
Quindi con TUTTE le modalità.......
Inoltre se supporta la modalità protetta può essere compilato per
Windows......
Ciao, Giuseppe
---------------------------------------------------------------------------
_Guybrush su IRCNet canale #programmazione
---------------------------------------------------------------------------

Se hai i sorgenti pascal, cosa ne dici di modificarli per il C?
Io a suo tempo ho fatto parecchi di questi porting velocemente.
L'idea base č quella della sostituzione di stringhe di un qualsiasi editor:
BEGIN con {
END con }
PROCEDURE con void
ecc..
Chiaro che un po' di lavoro devi comunque farlo, ma il grosso si fa cosě.
Io prevederei circa 1 ora per 2/300 righe di codice. Fai un po' di conti...
Alessandro Monti
Newsgroup: it.comp.lang.c
Titolo: TURBO ASSEMBLER BORLAND VENDESI

LIRE 180.000
NUOVO ANCORA DA REGISTRARE CON SCATOLA E MANUALI!
ANTONINO

A 180.000 preferisco usare il debug di dos :)))
--
Automatic posted from 
camcic.unicam.it
 [193.204.8.13]
via Mailgate Server - 
http://www.mailgate.org

Newsgroup: it.comp.lang.c
Titolo: esistono liste di funzioni?

Ho ripreso dopo un po' di tempo il C,
e mi chiedevo se esistono dei listati in cui vengono illustrate
velocemente tutte le funzioni delle librerie in circolazione o quelle
piu' usate.
Se qualcuno lo sa' mi fa' un grande favore.  Grazie
Ciao

 wrote in message
3878CD31...@libero.it...


Newsgroup: it.comp.lang.c
Titolo: Vendita listati interessanti

Per sviluppatori qbasic e quickbasic č stata realizzata una raccolta di
10 listati codice, sorgente su dischetto,che trattano, attraverso
esempi, aspetti difficili della programmazione avanzata e possono essere
utili anche a chi vuole imparare l'arte della programmazzione.
Fra questi:
-Gestione del mouse
-Esecuzione tramite scheda audio di file wav
-Effetti grafici
-Database
-Grafica 3d
-Giochi arcade
Il tutto a lire 20.000 spese postali comprese, da spedire tramite
contanti o vaglia postale all'indirizzo: Federico Vivarelli Via del
Faggiolo 5, 40132 Bologna (Ricordarsi di indicare chiaramente i propri
dati). Per ulteriori informazioni telefonare allo (051)565991 ore 18.00
- 20.00
Saluti,
Federico Vivarelli
--
Automatic posted from 
mail.tin.it
 [194.243.154.49]
via Mailgate Server - 
http://www.mailgate.org



Newsgroup: it.comp.lang.c
Titolo: Aiuto debug prog in c

Ciao a tutti sono nuovo di questo newsgroup, e sono alle prime armi col C.
Sto imparando il linguaggio con linux - Kdevelop.
il mio problema e' questo:
dovrei eseguire il seguente programma, visualizzando la printf("");
#include <stdio.h>
main()
{
int c, nl;
nl=0;
 while ((c=getchar()) != EOF)
 if (c== '\n')
 ++nl;
printf("%d\n",nl);
}
Il programma e' semplice e funziona correttamente, solo che quando lo
eseguo, e premo ctrl-c per interpretare EOF, non vedo il risultato
della printf!!! Come posso fare per visualizzarlo?
Saluti Andrea

della printf!!! Come posso fare per visualizzarlo?
Il programma in se e' giusto, sei tu che sbagli a segnalere EOF: devi
usare CTRL+D (in linux e sistemi unix in genere, almeno questa e' la
mia modesta esperienza).
CTRL+C e' un'altra cosa (SIGQUIT o SIGABORT, continuo a non
impararlo... vedi la documentazione sulla funzione standard signal e
sui vari segnali).
-- 
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."

 ha scritto nel messaggio
news:e55mjugj8tdks0cnq...@4ax.com...

Newsgroup: it.comp.lang.c
Titolo: conversioni in stringhe.

Salve a tutti.
Sto imparando a programmare in c su linux, e volevo capire una cosa.
ho cercato faq, corsi di c ma niente da fare. come si fa a convertire un int
o un char in modo che sia stampabile? mi spiego meglio. il mio programma
all'avvio deve visualizzare il numero della versione con una waddstr (non
voglio usare una printf), che visualizza solo stringhe. come faccio a
convertire il numero di versione (un char) in una stringa in modo appenderla
a un'altra stringa e darla in pasto alla waddstr? ho provato la toascii ma
non funziona.
dove posso trovare documentazione per la manipolazione di stringhe?
thanx!

non è che mi sono intestardito con la addstr, voglio capire come si
convertono interi o float in stringhe, un po' l'inverso della atoi e atof.

 convertono interi o float in stringhe, un po' l'inverso della atoi e atof.
c'č la itoa (char *string, int number, int radix); dove radix č la base
del nuomero da convertire (di solito 10)
-- 
Ciao, gengisdave
http://digilander.iol.it/gengisdave
Linux Registered User    # 198292
Linux Registered Machine # 88280

 convertono interi o float in stringhe, un po' l'inverso della atoi e atof.
Con la sprintf().
EMG


Orrore... La sprintf() e' deprecated. Meglio la snprintf(), per tutti
i sistemi che la supportano. A parte che ce ne sono delle versioni
opensource apposite. Nel caso specifico puo' anche essere usata
la tradizionale sprintf() ma in generale e' meglio farne a meno.
Sent via Deja.com
http://www.deja.com/

ho già provato con la itoa, ma non funziona! devo dare qualche lib strana in
fase di compil, qualche header o cosa?

 fase di compil, qualche header o cosa?
itoa() è in stdlib.h: aggiungi
#include <stdlib.h>
HTH gfb

HTH gfb
itoa() non e' standard.
Temo sia questo il motivo della mancata compilazione.
--
Andrea Laforgia (ICQ 87230455)
http://www.geocities.com/AndreaLaforgia
"ci sono tre tipi di persone nel mondo : quelli che
 sono bravi in matematica e quelli che non lo sono."

io ho le libc 5, e in  un manuale trovato in rete la itoa non esiste.

io ho le libc 5, e in  un manuale trovato in rete la itoa non esiste.
Perche', appunto, non e' standard.
Usa sprintf.


Newsgroup: it.comp.lang.c
Titolo: AIUTO CERCO COMPILATORE C GRATUITO

COME DA OGGETTO DA SCARICARE DA INTERNET
smerc...@tin.it

 COME DA OGGETTO DA SCARICARE DA INTERNET
Per quale sistema? Per DOS c'è il DJGPP mentre per WIN32 c'è il Cygnus.
Mi sembra ci sia anche un compilatore solo C (i due sopra sono C/C++) ma
ora non ne ricordo il nome (forse LCC o qualcosa di simile...).
EMG
Newsgroup: it.comp.lang.c
Titolo: strcat e strcopy

Lavorando in gcc sotto Linux ho un problema con questa semplicissima
funzione:
void funzione(char *x, char *y)
{
  ...
}
void main {
  char dest[30],sorg[30];
  ...
  funzione(strcat(strcopy(dest,sorg),"pippo")),
strcat(strcopy(dest,sorg),"pluto")));
}
Non riesco a capire perche' all'interno di funzione, x e y risultano avere
lo stesso valore, invece in uno ci dovrebbe essere alla fine "pippo" e
nell'altro "pluto". Perche' strcat non funziona?!? Dove sbaglio?!? Ogni
suggimento e' prezioso!
Grazie, Nicola

Questo che ti succede sucede per caso. Hai la memoria sporca.
Prima cosa che fa  la riga:
funzione(strcat(strcopy(dest,sorg),"pippo")),strcat(strcopy(dest,sorg),"plut
o")));
e'   strcopy(dest,sorg)
 sorg non e' definita !!!!!!
NON scrivere funzioni una dentro l'altra se non sei sicuro come funzionano!

 nell'altro "pluto". Perche' strcat non funziona?!? 
strcat funziona. strcat ritorna un  puntatore al buffer di destinazione,
quindi  entrambe  le chiamate  a  strcat  restituiscono dest. Poiche  il
buffer e` sempre lo stesso  non puo` contenere due stringhe diverse!. Mi
spiego meglio. Supponiamo  che gli argomenti della  tua funzione vengano
valutati da sinistra a destra  (potrebbe non essere cosi`). Prima verra`
valutata l'espressione:
strcat(strcpy(dest, sorg), "pippo"))
quindi  verra`   valutata  strcpy(dest,  sorg). La  chiamata   a  strcpy
restituisce dest, quindi l'espressione da valutare diventa:
strcat(dest, "pippo")
che  restituisce dest. Alla  fine di  questo, nell'array  dest ci  sara`
qualcosa  del tipo  "qualcosapippo". Adesso  viene  valutato il  secondo
argomento:
strcat(strcpy(dest, sorg), "pluto"))
La chiamata a strcpy sovrascrive il contenuto precedente
("qualcosapippo") e restituisce dest. Adesso
strcat(dest, "pluto")
restuisce dest, che conterra` "qualcosapluto". Alla fine di tutto questo
la chiamata alla tua funzione avverra` come:
funzione(dest, dest);
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
"Sei l'unica donna della mia vita".
(Adamo)

strcat(strcopy(dest,sorg),"pluto")));
Non inizializzi il parametro sorg .
void main {
 char dest[30],sorg[30];
...
 strcpy(sorg,"Quello che vuoi") ;


Newsgroup: it.comp.lang.c
Titolo: ciclo e sigaction

Salve...
Dovrei fare un ciclo che si interrompe con Ctrl-c... ho scritto:
while(1)
{
sigaction(....);
....
}
ma nn funziona.. ho sbagliato?
Grazie mille!!

 Dovrei fare un ciclo che si interrompe con Ctrl-c... ho scritto:
Così dovrebbe andar bene:
#include <setjmp.h>
#include <signal.h>
sigjmp_buf jmpb;
void gestore_x(int s)
{
	siglongjmp(jmpb, 1);
}
int main()
{
	/* uso signal, andrà bene anche sigaction */
	if(signal(SIGINT, gestore_x) == SIG_ERR)
		exit(1);
	if(sigsetjmp(jmpb, 1) == 0)
 		/* metti nel loop quello che vuoi */
		while(1)
			;
 
	exit(0);
}
-- 
                    |   .-.
Gianluca Di Corato  |  : | :  I N  P E A C E  W E  T R U S T
   (aka sgrung)     |  '/|\'
Newsgroup: it.comp.lang.c
Titolo: Comparazione file

Salve a tutti.
Mi servirebbe qualche link o qualche dritta per capire come impostare
una comparazione file.
Es: file1 e file2
Devo capire se la parola "compilatore" c'è nel file1 e nel file2
In pratica come "cerco" una parola in un file?
Grazie a tutti

 In pratica come "cerco" una parola in un file?
Ci sono vari modi piu' o meno ottimizzati. Il modo con cui lo fai dipende
sempre e solo da come e' strutturato il file.
La strtok (o qualche sua implementazione rientrante) potrebbero esserti di
aiuto.
-- 
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."

 NlgN.
No, non sono ancora capace, sono agli inizi.

Newsgroup: it.comp.lang.c
Titolo: EXIT FREE

Ho realizzato un programma che memorizza dei dati (stringhe di caratteri),
all'interno di una lista concatenata. Tutto lo spazio neccessario per
contenere tutte le stringhe è stato allocato mediante le funzioni calloc e
realloc. Prima di uscire dal programma è necessario deallocre, mediante la
funzione free tutta la memoria che è stata precedente allocata con calloc e
realloc? o viene liberata automaticamente?
--
Tank you in advance
Fabio Gallus
e-mail: 
fabioel...@tiscalinet.it

realloc? o viene liberata automaticamente?
Generalmente viene deallocata automaticamente.

Questo e' implementation dependent.  Quello che lo standard garantisce
all'atto della terminazione di un programma e' la chiusura dei file
aperti; *generalmente* la memoria allocata viene liberata, ma esistono
ambienti (AmigaOS comes to mind) dove il pool della memoria e'
system-wide e deve essere liberato esplicitamente.
-- 
Maurizio Loreti                      
http://wwwcdf.pd.infn.it/~loreti/mlo.html
Un. of Padova, Dept. of Physics - Padova, Italy          
lor...@padova.infn.it

system-wide e deve essere liberato esplicitamente.
Credo che anche Windows segua lo stesso principio...

 realloc? o viene liberata automaticamente?
	Lo spazio allocato dinamicamente con calloc() e malloc() puo' 
venire restituito all'uscita da un programma, ma non viene (Kelley-Pohl) 
restituito all'uscita da una fuzione. Personalmente, abituandomi a 
deallocare lo spazio uscendo da una funzione, trovo naturale deallocarlo 
uscendo da un programma.
	Ciao,
		Giulio Larsi

uscendo da un programma.
Anche se bisogna precisare che l'uscita da una funzione non e' analoga
all'uscita da un programma, in quanto ci sono funzioni in cui
l'allocazione viene compiuta per essere sfruttata in un secondo
momento.
E' il caso, ad esempio, delle funzioni della libreria string.h, le
quali restituiscono per l'appunto un puntatore ad uno spazio di
memoria che puo' essere stato allocato all'interno della funzione
stessa.
Newsgroup: it.comp.lang.c
Titolo: casting struct hostent

Ciao a tutti,
compilando il codice ottengo questo errore:
dereferencing pointer to incomplete type.
la riga incriminata č:
my_client.sin_addr.s_addr = ((struct in_addr*)(host->h_addr))->s_addr
(ho definito: struct hostent *host)
Si tratta di un errore di sintassi o c'č dell'altro?
Ps: ho usato:
<stdio.h>,<sys/types.h>,<sys/socket.h>,<netdb.h>,<netinet/in.h>,<stdlib.h>

(ho definito: struct hostent *host)
Come hai dichiatato "struct hostent *host" e  "struct in_addr"?
my_client di che tipo e'?
-- 
   THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
visit my home page:
http://web.tiscali.it/KilometroZero

Newsgroup: it.comp.lang.c
Titolo: [?]Come posso fare?

Salve a tutti , ho un Array pippo[99] , devo confrontare le prime 5 lettere
,{da pippo[0] a pippo[4]}
con le sucessive cinque lettere partendo da pippo[5] a pippo[9] , poi da
pippo[6] a pippo[10] e cosi
via , scandendo tutta la stringa fino a pippo [99] , ripartendo poi da
{pippo[1] a pippo[5]}e cosi via.
Ho provato ad usare prima la funzione strcmp  poi la strncmp , ma con
risultati poco  apprezzabili
Se fosse stato in Basic , non c'erano problemi , ma putroppo con il C  e un
altra cosa.
Con il Basic avevo il comando Mid$ x,y ,n  oppure Left x, y ,n o Right$ ,ma
con il C non
trovo la stessa semplicità del vetusto Basic ,Quickbasic  ect.
Grazie a tutti
Ciao    Roberto

risultati poco  apprezzabili
Devi confrontare lettera per lettera o gruppi di 5 lettere?
Assumo che tu debba confrontare gruppi di 5 lettere.
Il confronto puoi farlo con strncmp, con qualcosa del tipo
const int offset = 5;
int x = 0;
strncmp(pippo[x], pippo[x+offset], offset);
E poi aggiungi offset+1 ad x e ripeti.
La tua esposizione del problema non č chiara. Non capisco se quando arrivi
ad esaminare - ad esempio - pippo[96] devi confrontarlo con gli elementi
iniziali dell'array. In tal caso usare strncmp non basta piů, bisogna
lavorare in modo diverso.
Lanugo
Newsgroup: it.comp.lang.c
Titolo: Aiuto per InvertiStringa.....

Dunque ho la seg. funzione:
int inverti(char *stringa){
   int a, b, m, len = strlen(stringa);
   m = len / 2;
   a = 0;
   b = len - 1;
   for (; a < m; a++, b--){
      char t = stringa[a];
      stringa[a] = stringa[b];
      stringa[b] = t;
  }
  return 0;
}
e la seg. chiamata:
printf("La stringa '%s', di %u caratteri, da luogo a '%s' se
invertita.\n\n",destinazione, lunghezza, inverti(sorgente));
solo  che in questo caso inverti() mi restituisce <null>
Non so come dichiarare questa funzione, per evitare di usare
strrev().......io devo restituire UNA STRINGA in modo che il printf la
riceva...e deve essere la stringa invertita....aiutatemi........
Ho anche usato questa funzione:
char *inverti(char *stringa){
     int i;
     int j;
     for(i=strlen(stringa)-1;i>=0;i--){
         for(j=0;j<strlen(stringa)-1;j++){
            temp[j]=stringa[i];
         }
     }
     return stringa;
}
ma anche questa mi da <null>
Aiutatemiiiiiii per favore......!!!!!

solo  che in questo caso inverti() mi restituisce <null>
E chiaro che ti restituisce NULL, la funzione restituisce
sempre zero.  
Questo perche' hai preteso che avesse un valore di ritorno.
Ti consiglio la lettura del Kernighan & Ritchie.
-- 
Andrea Laforgia (
walkie...@libero.it
)
"Usenet is a strange place" [Dennis Ritchie]

 Questo perche' hai preteso che avesse un valore di ritorno.
Grazie Andrea...oggi parlando con le ragazze gli ho detto che in effetti era
assurdo che la funzione
potesse pretendere un valore di ritorno.....ma che valore posso
ritornare????
Un intero che rappresenta il carattere??
In effetti la funzione strrev() ha il seg. prototipo:
char* _strrev (char* szToReverse);
quindi restituisce un puntatore, e funziona.
Perchè se io scrivo una funzione con il seg. prototipo 
ad.es
. char
*inverti(char *stringa);
e scrivo nella funzione
char *inverti(char *stringa){
    ..........
    ..........
    return *stringa;
}
il tutto non funziona??
Anche strrev() restituisce un puntatore ed io ho cercato di copiare strrev()
ma senza successo....se scrivo 'return stringa' mi resituisce il primo
carattere tante volte quanta è lunga la stringa, se resituisco un puntatore
il programma si chiude dopo aver generato errori.
Dove posso vedere il codice di strrev()?
Spiegami, ti prego!
Grazie mille.


I'm not prejudiced, I hate everyone equally.

 ha scritto nel messaggio
news:%JTh8.3627$%d1.9...@twister2.libero.it...

no puoi scrivere
..
return *stringa
perche stringa l'hai gia' definita come puntatore a carattere:
in questo modo *stringa indichi l'indirizzo del puntatore alla stringa!!!
quindi
..
return stinga
ciao

 Un intero che rappresenta il carattere??
char* inverti(char *stringa){
   int a, b, m, len = strlen(stringa);
   m = len / 2;
   a = 0;
   b = len - 1;
   for (; a < m; a++, b--){
      char t = stringa[a];
      stringa[a] = stringa[b];
      stringa[b] = t;
  }
  return stringa;
}
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG
Newsgroup: it.comp.lang.c
Titolo: ancora scanf e stringhe

Mi trovo davanti ad un dubbio:
temo che il mio compilatore batta i coperchi.
Il problema è quello già proposto:
devo acquisire da tastiera una stringa di caratteri includendo
gli spazi.
Ho provato con una funzione scritta ad hoc, ma non funziona.
Ammesso che sia sbagliata, ho provato la soluzione
dell'espressione regolare:
scanf("%[^\n]\n", stringa);
ma anche in questo caso si verifica un comportamento anomalo
a runtime.
Il fatto è che questa riga di codice l'ho trovata anche su un manuale
tale e quale come esempio per acquisire una stringa di caratteri
eccetto il newline, quindi della sua correttezza sono sicuro.
Qualcuno sarebbe così gentile da postarmi una funzione
per fare quanto ho bisogno di cui è sicuro del funzionamento,
come ulteriore verifica prima di cestinare il mio compiler?
grazie
-- 
"Ciò che si ha per nulla non vale nulla"
Koala

Anno Domini Mon, 16 Feb 2004 17:28:08 GMT, Rat Man, nobilissimus apud
internautas, scripsit:
[CUT]
Provato con gets o fgets? C'è un mio post di poco fa che contiene non poche
risposte...
-- 
Poochie ©
Teoricamente la teoria è uguale alla pratica, ma in pratica non lo è...

 
Prova con:
fflush(stdin);
gets(stringa);
ma è gets() "pericolosa" in quanto non puoi specificare la 
lunghezza del buffer.
In alternativa puoi usare:
fflush(stdin);
fgets(stdin,STRING_LEN,stringa);
dove STRING_LEN è la lunghezza del buffer.
Ciao!
Andrea B.

 fflush(stdin);
fflush(stdin) e` sbagliato... fflush non va mai chiamato sugli stream
aperti in lettura. Per svuotare lo stdin si usa un ciclo:
while(getchar() != '\n')
        ;
Luca
-- 
Home: 
http://kronoz.cjb.net
"In linea di principio sarei indifferente al natale, se solo il natale
 ricambiasse la cortesia e mi lasciasse in pace." -- Marco d'Itri

> fflush(stdin);
Ci risamo, ma li leggete i messaggi nel gruppo ?
fflush() è definita solo per gli stream di output!

Newsgroup: it.comp.lang.c
Titolo: sizeof()?

Salve a tutti
  mi stavo chiedendo se ci fosse una funzione di libreria che
mi ritorna lo spazio occupato da una funzione,
proprio come il   sizeof() fa con i dati...
grazie a chiunque risponda
    duido
-- 
Posted from  [62.98.94.12] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG


Sarebbe bello se vi fosse!
ma penso non vi sia, le funzioni occupano una quantita' di memoria
variabilissima in "funzione" di moltissime "variabili".


Talking about music is like dancing about architecture.
                -- Laurie Anderson

Vi ringrazio comunque per avermi risposto
grazie a tutti
duido
-- 
Posted from  [62.98.93.12] 

Newsgroup: it.comp.lang.c
Titolo: Dichiarazione di funzione

ciao a tutti
che differenza c'è tra quete due dichiarazioni di funzioni?
void *funzione();
void funzione();
ok so cosa sono i puntatori ed immagino che la prima dichiarazione
rappresenti un puntatore ad una funzione tant'è che la uso quando uso
getvect e setvect.... ma in specifico come funziona? quando si usa? cosa
cambia da quella senza * (magari diverso posizionamento in memoria?)? posso
dichiarare una funzione con * e poi scrivere il codice di quella funzione
magari in questo modo:
void *funzione()
{
   istruzioni
}
spero di essermi spiegato...
grazie a tutti
ciao
kk

 spero di essermi spiegato...
In effetti non molto;-) Comunque forse ti ho già risposto
Ciao

 getvect e setvect.... ma in specifico come funziona?
Un puntatore a funzione puo' anche essere restituito con un void *: alla
fine sono sempre indirizzi di memoria, ma non e' il modo migliore per farlo
:)
Devi fare attenzione alle regole di precedenza degli operatori.
Un puntatore a funzione comunque e' un puntatore che contiene l'indirizzo di
una funzione (da questo indirizzo puoi richiamare la funzione puntata).
La sintassi e' questa:
    tipo_ritorno (*puntatore_a_funzione)(parametri)
Se avessi voluto dichiarare una funzione che ritorna un puntatore a funzione
(come credevi tu), avresti dovuto usare un sistema piu' complesso:
    void (*func(int value))(int)
Questa e' una funzione ("func") che accetta come parametro un intero
("value") e ritorna un puntatore ad una funzione che accetta come parametro
un intero e restitiusce un void.
Nota la parentesi tra "void" e "*" (e la rispettiva chiusura).
-- 
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."

 Nota la parentesi tra "void" e "*" (e la rispettiva chiusura).
non era quello che intendevo cmq ho capito...
però ho ancora qualche dubbio:
1) E' giusto:
int funzione(int a) { /* codice */ }
void main()
{
void (*funct)();
int ris;
funct=funzione(int a);
ris=funct(12);
}
2) E' giusto:
int (*funct)(int a)
{
    // codice
}
void main()
{
    funct(7);
}
grazie per la risposta (anche a Wonderboy)
ciao
kk

 }
Che io sappia non e' giusto, ne ha senso :)
Un puntatore a funzione e' una variabile, non ha un "corpo" come una
funzione.


 funzione.
è vero era solo per essere sicuro
e così è corretto?
void (*pfarr)()[10];
o forse devo fare così per forza?
typedef void (*pfun)();
pfun pfarr[10];
grazie ancora
ciao
kk

 pfun pfarr[10];
E' sempre meglio splittare le definizioni con delle typedef.
Quarda questo punto delle FAQ:
 
http://www.eskimo.com/~scs/C-faq/q1.21.html
dove ti spiegano il tutto meglio di come potrei mai fare.

Newsgroup: it.comp.lang.c
Titolo: due esercizi di programmazione

salve a tutti! tempo fa il mio prof di Informatica I ha proposto i seguenti
due problemi:
1. progettare un programma che conti il numero di giorni che intercorrono
tra due date qualsiasi tenendo conto anche degli anni bisestili.
2. progettare un programma che calcoli come distribuire le tracce di un CD
sui due lati di una audiocassetta minimizzando la differenza del "playing
time" tra i due lati
i programmi gią compilati li trovate nella sezione "utility" del mio sito!
http://digilander.libero.it/ric1081/
e se avete altri simpatici problemi proponeteli pure!!
ciao,
riccardo

 e se avete altri simpatici problemi proponeteli pure!!
Magari le persone di questo NG sono piu' interessate ai sorgenti! Che ad dei
programmi trivial in versione compilata.
Tuttavia non credo che i due problemini che hai postato siano di grande
interesse ....
Tommy

 > i programmi gią compilati li trovate nella sezione "utility" del mio


 magari qualcuno ha voglia di cimentarsi in questi *esercizi*.......
si, e la versione compilata a cosa servirebbe?!?
Poi ha postato, qui, sul gruppo di C++, du quello di perl, (che sono quelli
italiani che seguo), poi dove altro....
Tommy

Newsgroup: it.comp.lang.c
Titolo: Domanda?

Che cosa significa programmazione orientata agli oggetti?

 Che cosa significa programmazione orientata agli oggetti?
l'argomento č... enormemente vasto.
http://www.objectmentor.com/resources/articles/ooadpcpp.pdf
http://www.objectmentor.com/resources/articles/abcpvf.pdf
http://www.objectmentor.com/resources/articles/collab.pdf
.. ti consiglio di cercare anche riguardo:
liskov substitution principle
open closed principle
one class one responsibility principle
dependency inversion principle
interface segregation principle
-- 
sbi

 ha scritto nel messaggio 
news:M%7jd.1699$2n2....@tornado.fastwebnet.it...


Newsgroup: it.comp.lang.c
Titolo: malloc()

Come si comporta la malloc quando alloca della memoria?
In particolare cos'e' il "memory alignment" di n bytes?
Se ho capito bene quando la malloc alloca spazio in memoria non alloca
esattamente lo spazio richiesto ma un multiplo di quel valore n. Se ad
esempio n e' 8 bytes (o 4 bytes?) e devo allocare per una struttura 13 byte
la malloc in realta' ne alloca 16. Giusto? 
Grazie mille...
GiAn

 Come si comporta la malloc quando alloca della memoria?
Nessuno può dirlo, dipende dal sistema. Generalmente, la malloc() viene
*mappata* sull'API del sistema operativo (vedi VirtualAlloc() sotto
Windows), quindi le regole di allineamento non sono definite a priori. 
Comunque, in linea di principio, ciò che hai inteso come allineamento è
corretto.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it
Newsgroup: it.comp.lang.c
Titolo: Un niubbo e il Dev-C++

Ciao a tutti!
Come da oggetto... sono alle prime armi con la programmazione e mi è stato
consigliato il dev-C++ come ambiente gratuito e funzionale per scrivere
programmi in C.
Il problema è che il compilatore non funziona, dà questi errori:
Impossibile trovare il file specificato (che ho messo in una directory
chiamandolo File_sorgente.c e che non ha motivo di non essere trovato!)
Esecuzione di gcc.exe...
gcc.exe "<directory>\File_sorgente.c" -o "<directory>\File_sorgente.exe"
-ansi -traditional-cpp -w -g3 -lobjc -g3
Esecuzione terminata
Mi ricordo che qualcun altro aveva avuto il mio stesso problema, forse c'è
da cambiare qualcosa nelle impostazioni del programma, che per default si
aspetta un codice in C++. Io ho cambiato tutto ciò che mi è capitato sotto
mano (come in Strumenti\Opzioni di compilazione\Supporto programmi ANSI
standard C o Supporto aspetti dei preprocessori tradizionali C), ma senza
risultati. Sapreste aiutarmi a risolvere questo inconveniente?
Senza compilatore... è inutile che inizio a programmare :-).
Grazie in ogni caso!
Rocky3
-- 
"Il sapere e la ragione parlano, l'ignoranza ed il torto urlano".
Arturo Graf / Indro Montanelli / Anonimo

 Il problema č che il compilatore non funziona, dą questi errori:
Dimenticavo: nel programma compare questa riga:
#include <stdio.h>
Forse č proprio questo il problema.
Ho usato la funzione "Cerca" di Windows ma questo file non č stato trovato.


 #include <stdio.h>
... compare solo questa riga ?
prova a compilare con un altro compilatore o da riga di comando ,
o tramite file.bat , il devc usa mingw .
magari  l'install del DEVC non e andata a buon fine .
Ciao

 magari  l'install del DEVC non e andata a buon fine .
Uhm quest'ipotesi la scarterei.
Grazie comunque!
Rocky3

Newsgroup: it.comp.lang.c
Titolo: Problema

Scusate, ho un altro problerma ed avrei bisogno di un aiuto.
Ho scritto questa funzione:
int GameOver(void)
{
  clrscr();
  if (Apples_Eaten <= 2)
  {
    char answer;
    [...]
    printf("Vuole abbassarsi a ricominciare questo giochino? [s/n]\n");
    gotoxy(8, 24);
    scanf("%c", &answer);
    if (answer == 's') return 1;
    else if (answer == 'n') return 0;
    else
    {
      while (answer != 's' || answer != 'n')
      {
        clrscr();
        gotoxy(3, 10);
        printf("Devi assolutamente inserire n o s rispettivamente per uscire
");
        printf("o per contnuare.");
        gotoxy(6, 11);
        scanf("%c", &answer);
        if (answer == 's') return 1;
        else if (answer == 'n') return 0;
      }
    }
  }
  else
  {
    char answer;
    [...]
    printf("Ti consiglio ancora allenamento. Vuoi seguire il mio
consiglio?");
    printf(" [s/n]");
    gotoxy(8, 15);
    scanf("%c", &answer);
    if (answer == 's') return 1;
    else if (answer == 'n') return 0;
    else
    {
      while (answer != 's' || answer != 'n')
      {
        clrscr();
        gotoxy(6, 10);
        printf("Devi assolutamente inserire n o s rispettivamente per uscire
");
        printf("o per contnuare.");
        gotoxy(6, 11);
        scanf("%c", &answer);
        if (answer == 's') return 1;
        else if (answer == 'n') return 0;
      }
    }
  }
}
che viene chiamata dalla main in questo modo:
if (GameOver()) {clrscr(); goto label;}
quando viene chiamata la GameOver per la prima volta tutto ok, funziona
benissimo, poi, se la si chiama un'altra volta scrive direttamente "Devi
assolutamente inserire n o s rispettivamente per uscire e per continuare.
Perchè? Facendo il debug mi segna che quando arriva alla scanf passa subito
oltre senza aspettare che io scriva qualcosa e poi la variabile answer mi
contiene '\n'. Cosa sbaglio?
Scusate il disturbo e grazie per ogni eventuale aiuto.
---
Ramses
---
icq:39860665
http://knowledgeparty.cjb.net
http://evilz0ne.cjb.net

 Perchč? Facendo il debug mi segna che quando arriva alla scanf passa


    char getch();
Bisogna vedere se il suo compilatore la supporta.
--
CyberWalkie - walkietalkie(at)
libero.it

 pressione del tasto invio.
Però non ho trovato come si usi nell'help del Borland C++. Come si fa ad
usarla? Per provare anche questa visto che le altre non riesco a farle
funzionare.
Grazie mille per la risposta.


 dopo la scanf().
Questo funziona perfettamente.
Thank you very muco :-))


 Thank you very muco :-))
Ma che schifo, bleah :-(
Alex
Newsgroup: it.comp.lang.c
Titolo: Variabili e puntatori

Qualcuno saprebbe spiegarmi perche' scrivere su un puntatore e' molto piu'
lento che scrivere in una variabile?
Es.
char var;
var='a';
e qui tutto a posto, pero' se provo cosi':
char *var;
*var='a';
e' infinitamente piu' lento (effettuandolo moltissime volte con un ciclo
loop).
Devo scrivere dentro array molto grossi e quindi devo per forza utilizzare i
puntatori.
Es.
char *var;
var=malloc(100);
var[0]='a';
...
Sapete dirmi come si possa fare per velocizzare il tutto?
Grazie a tutti.


ICQ #34602650

 peculiare dei puntatori è questo.
beh, non direi...
ad esmpio per scorrere un array basta memorizzare l'indirizzo iniziale su un
registro (parola chiave "register", codice inline asm, ecc.) e incrementarlo
di una grandezza fissa (1 nel caso di un char solo)
dovrebbe velocizzare un po', credo
TobiX

 di una grandezza fissa (1 nel caso di un char solo)
In C/C++ esiste l'aritmetica dei puntatori, dove questa "grandezza
fissa" è determinata staticamente in fase di compilazione. Si tratta
comunque di una grandezza fissa e statica, non viene calcolata runtime
(se è questo quello che temi). La differenza fra usare un puntatore o
pezzi di codice asm è la perdita di compatibilità.


dovrebbe velocizzare un po', credo
Il codice inline asm non e' portabile, inoltre per un array viene gia'
fatta una cosa del genere, cioe' il suo indirizzo viene passato in un
registro base e viene utilizzato un registro indice come offset.
Come ha detto giustamente Marco Sarti, la parola chiave "register"
molto spesso viene ignorata.
Andrea Laforgia

 lento che scrivere in una variabile?


> var[0]='a';
Forse non hai notato che l'amico aveva scritto una bella malloc()
Andrea Laforgia

 loop).
dove chiaramente il puntatore non era inizializzato:-).
Andrea Laforgia wrote:

--
DevNet
C++ & Vb developer
E-mail: Filosga...@Flashnet.it
Web: None(under costruction)
Icq: #28861192

Newsgroup: it.comp.lang.c
Titolo: Perche' non funziona?

devo leggere in input una sequenza di numeri interrotta dal numero zero.
Ho usato :
while(scanf("%d", &n) != 0)
ma immettendo lo zero il ciclo non termina.
La stessa istruzione funziona se al posto dello zero uso 1 o altro.
Qualcuno sa spiegarmi perche'?
Grazie per l'attenzione

 La stessa istruzione funziona se al posto dello zero uso 1 o altro.
leggi la documentazione sulla scanf...
/*
Return Value
On success, scanf returns the number of input fields successfully scanned,
converted, and stored. **The return value does not include scanned fields
that were not stored**.
On error:
if no fields were stored, scanf returns 0.
 if scanf attempts to read at end-of-file or at end-of-string, it returns
EOF.
*/
in pratica se metti la scanf cosi' ritorna il numero di campi letti e NON il
valore del campo letto....
devi usare
scanf("%d",&n);
while (n)
{
    ....
    scanf("%d",&n);
}
ciao

 ha scritto nel messaggio
news:oA18b.95907$sj6.1...@tornado.fastwebnet.it...


 converted, and stored.
scusa nella fretta ho evidenziato la parte sbagliata, quello che interessa a
te è questo.

 te č questo.
Grazie

 } while(n);
Grazie
Newsgroup: it.comp.lang.c
Titolo: Sono un Pivellino!

Scusate per la domanda:
mentre facevo il mio esercizietto
#include <stdio.h>
main(){
printf("\n\nProve\n   tecniche di\nvisualizzazione"); 
}
al momento della compilazione ottengo 
Var.c:4:2: warning: no newline at end of file.
Qualcuno potrebbe dirmi per quale motivo?
Perchč?

 Perchč?
Ah, questo bisognerebbe chiederlo al tuo esigentissimo compilatore (o al
pignolo che l'ha scritto)...
Mai visto un warning del genere, e non capisco neanche che senso abbia.
--
Cingar
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Mai visto un warning del genere, e non capisco neanche che senso abbia.
A me č successo un paio di volte con dei file che (non chiedetemi come) 
si erano corrotti.. ho risolto il tutto facendo copia/incolla (del 
codice) dal file originale ad un file vuoto, e compilando quest'ultimo.
PsychoWood

 Mai visto un warning del genere, e non capisco neanche che senso abbia.
non conosco il suo compilatore, ma a me lo da il gcc con le opzioni
-std=c++98 -Wall -pedantic
a parte che e' un warning e non un error (quindi non blocca la
compilazione) il motivo e' che, se l' ultima riga non e' vuota, potrebbe
essere indice del fatto che il programmatore s' e' scordato qualcosa (vedi
un "copia e incolla" selvaggio piuttosto che una redirezione con piu' d'
un filtro)
-- 
18/11/2004 | -4 all' alba!

 un filtro)
no. il motivo è un altro:
If a source file that is not empty does not end in a newline
character, or ends in a newline character immediately
preceded by a backslash character, the behavior is undefined.
-- 
sbi
Newsgroup: it.comp.lang.c
Titolo: sensori di temperatura wireless

Io la butto li....
esistono dei sensori di temperatura wireless (anche bluethoot) che
posso posizionare in vari punti della casa e controllare da pc?
Se potessi avere delle API con cui colloquiare con questi sensori
potrei fare un programmino che monitorizzi continuamanete l'andamento
delle temperature, memorizzando i valori sul PC ed eventualmente
anche
su un database su un mio sito web, in modo da vedere come vanno le
cose anche da fuori casa....
troppo complicato??????
grazie a tutti...

luigi....@tin.it
 ha scritto:

Io ho fatto esattamente quel che chiedi realizzandomo il sensore di 
temperatura con un circuitino interfacciato ad una Arduino Bluetooth 
(
www.arduino.cc
) ed una sonda DS18B20 . Ho poi un serverino sempre 
acceso che interroga la scheda con un protocollino che ho scritto e 
scrive le temp su db.
ciao
Fabrizio
Newsgroup: it.comp.lang.c
Titolo: ricostruzione forme in 2D:domanda OT??

ciao a tutti, devo implementare un programma che, lette delle
coordinate di punti nel piano, ricostruisce la forma 2D dell'oggetto
creato. Sto a tal proposito studiando un pò di geometria
computazionale...non so se è il gruppo giusto, ma vorrei chiedervi se
qualcuno conosce i diagrammi di voronoi e una loro semplice
implementazione in C.
grazie a tutti
sophos


Puoi guardare l'implementazione migliorata della versione
di Steve Fortune:
http://www.derekbradley.ca/voronoi.html
ciao,
g.

Newsgroup: it.comp.lang.c
Titolo: DB connection using C

Salve,vorrei sapere se esiste qualche libreria in C\C++ che permetta la
connessione a db server sullo stile dell'accoppiata DBI/DBD per il perl; in
particolare mi interessano driver per postgresql e interbase.
Grazie in anticipo,ciao

 connessione a db server sullo stile dell'accoppiata DBI/DBD per il perl; in
non conosco DBI/DBD di perl però credo che ogni dbs venga con la sua
libreria dedicata. ad esempio, quella di postgres si chiama libpq, e ti
consente di conneterti ai db ed eseguire query sql. anche mysql ne ha
una.
postgres tra l'altro ha anche odbc...
bye, Touch

Newsgroup: it.comp.lang.c
Titolo: ESISTE FAQ C CON UTILITY?

c' e' un sito dove trovo faq e utility gia' scritte da cui prendere
spunto?
Grazie

 c' e' un sito dove trovo faq 
http://www.eskimo.com/~scs/C-faq/top.html
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Univ. of Padova, Dept. of Physics - Padova, Italy            
lor...@pd.infn.it

Newsgroup: it.comp.lang.c
Titolo: scanf fa impallare tutto

ciao a tutti
sono un neofita di questo linguaggio. è da molto che mi interesserebbe
approfondire il c ma ho sempre lo stesso problema (che non mi fa andare
avanti) con tutti i compilatori e con tutti gli os, ora vi spiego...
fin'ora HO PROVATO VC++ della microsoft e lcc win32 per win e gcc per linux
attualmente uso win98/linux mandrake 8.2.
quando scrivo un prog, anche stupido o anche copiandolo da qualche parte
(quindi non ci sono possibilità di errore), ogni volta che l'utente manda
qualcosa al prog (es scanf("%d", numero);) si blocca tuto. sotto win mi dice
che il programma ha eseguito un errore, sotto linux mi viene fuori scritto
segmentation fault (o roba simile, non ricordo) e termina il prog.
come vi ho già detto tutto ciò succede con qualsiasi programma, qualsiasi
compilatore e qualsiasi os. cosa può essere? cosa posso fare?
grazie in anticipo per le risposte
Emlyn
--------------------------------
Inviato via 
http://usenet.libero.it

> qualcosa al prog (es scanf("%d", numero);) si blocca tuto. sotto
scanf("%",&numero);
devi passargli l'indirizzo di memoria in cui č contenuta la variabile.
Ciao
Stefano

> > qualcosa al prog (es scanf("%d", numero);) si blocca tuto. sotto
Manca la & davanti alla variabile!
Ciao
--
                 ZaX
www.falcemartello.cjb.net
Newsgroup: it.comp.lang.c
Titolo: SITI SCIOCCANTI

http://happyportal2000.iscool.net
 
http://www.happyportal2000.too.it
http://happyportal2000.cjb.net
http://happyportal2000.3000.it
 
http://happyportal2000.da.ru
http://happyportal2000.xredirect.com
Responsabile Marketing
Erika Pieroni
00000000000
00000

 ha scritto nel messaggio
news:b21m78$9dg$1...@lacerta.tiscalinet.it...

cara erika pieroni, responsabile marketing...
ti parlo (credo) a nome di tutto il NG.
ci siamo rotti i *oglioni della *ottuta pubblicita che le aziende postano.
non capite che è tutta pubblicita negativa, come se io venissi a suonarti a
casa all'una di notte per dirti che ho aperto un nuovo negozio in fondo alla
tua strada. infilati nel *ulo i tuoi siti scioccanti.
per il moderatore (se c'è):
caro M., è pregato di non tagliare questo post in quanto pensiero di tutta
la comunita', se taglia questo, ritengo giusto tagliare pure tutta la
pubblicita (altamente altamente OT)
un saluto a tutto il NG.
ps:erika pieroni, responsabile marketing, ci posti il tuo indirizzo di
casa??
Newsgroup: it.comp.lang.c
Titolo: Aiuto per calloc

ciao a tutti ;)
questa volta mi sto cimentando nell' uso di calloc...ma purtroppo non 
riesco a usarlo.
vi posto il codice:
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
main()
{
   clrscr();
   void *ptr;
   if((ptr=calloc(20,sizeof(char)))==NULL);
     printf("Errore");
   else
     {
     ptr="a";
     printf("%c",ptr);
     }
   getch();
   return 0;
}
come vedete è molto semplice, dovrebbe scrivermi il contenuto di ptr che 
ho stabilito il momento prima, e invece scrive uno scarabocchio ;), cmq 
è per il fatto ke mi dà errore, infatti non riesco ad usare calloc, che 
in questo caso mi ritorna NULL.
ho alcuni problemi a capire come mai il mio turbo c vuole che ptr sia 
dichiarato void...dato che sul libro ho visto che un puntatore void
accetta qualunque valore ( forse ho capito male io ).
grazie a tutti. ciaoooo

 }
-- 
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."

ragazzi lasciate stare, grazie cmq, ho visto ke la cosa principale da 
cambiare era fare un recast sul void ritornato dal calloc.....ma da come 
lo diceva il libro sembrava lo facesse da solo...:PP
ciaoz


 [snip] 
#include <stdlib.h>
#include <stdio.h>
int main(void) {
  char* ptr;
  ptr=calloc((size_t) 20, sizeof(char));   /* perche' 20 comunque? */
  if(ptr==NULL) {
    fprintf(stderr, "Errore.\n");
  } else {
    *ptr='a';
    printf("Carattere: '%c'\n", *ptr);
  }
  free(ptr);
  return EXIT_SUCCESS;
}
$ gcc -Wall -ansi -pedantic calloc.c
$ ./a.out
Carattere: 'a'
$ spint calloc.c
Splint 3.0.1.6 --- 11 Jun 2002
Finished checking --- no warnings
:-)
by LjL
ljl...@tiscalinet.it

ciaoz
No, non devi castare calloc()!
by LjL
ljl...@tiscalinet.it

ragazzi lasciate stare, grazie cmq,
Guarda che stai compilando un codice C in modalità C++, è chiaro che
ti viene richiesto il cast, ma se compili in modalità C non c'è
bisogno di _alcun_ cast.
-- 
Andrea Laforgia
#exclude <windows.h>

boh ragazzi io nn sò nemmeno se compilo in c o c++...!


 Finished checking --- no warnings
?_? (man|info|apt-cache search) spint non danno risultati... e sono offline
;-)
-- 
 Ciao, Bianco.                         Reply to luca.bianco (at) 
tiscali.it
|--------[Powered by Debian GNU/Linux Sarge - 2.4.19 - AMD K6-200]--------|
|------------[Linux Registered User #287769 - Machine #169192]------------|

;-)
È "splint", non "spint" :-)
Era un errore di battitura: tutto quello pseudo-log della console è
appunto pseudo, perché l'ho copiato qui sopra a mano dal 486 che uso
per programmare :-)
by LjL
ljl...@tiscalinet.it