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

Ho scaricato il c++ chiamato DJCPP dalla rete (12Mb)!
Ho scompattato tutti i file nella directory c:\DJCPP come descritto nelle
spiegazioni di istallazione, con i nomi originali delle subdir.
Il problema e' che non vuole saperne di compilare neppure programmini
stupidi fatti apposta per prova.
Al tempo, i programmini li compila, ma non riesco a farglieli eseguire.
Sto parlando rell' interfaccia grafica RHIDE.
Non riesco a fare il MAKE, se lo faccio dal prompt dei comandi (make
nomefile (senza estensione)) dice che non trova un certo crt0.o
C:\Djgpp\BIN>dir *.o
 Il volume nell'unità C è SATAN
 Numero di serie del volume: 20F3-5C25
 Directory di C:\Djgpp\BIN
PROVA    O             966  17/02/98  20.53 prova.o
PROVA1   O             952  18/02/98  19.10 prova1.o
         2 file          1.918 byte
         0 dir        30.015.488 byte disponibili
C:\Djgpp\BIN>make prova
gcc   prova.o   -o prova
ld.exe: cannot open crt0.o: No such file or directory (ENOENT)
make.exe: *** [prova] Error 1
C:\Djgpp\BIN>
Se copio questo file che e' in un'altra subdirectory nella C:\DJGPP\BIN fa
qualcosa in piu':
C:\Djgpp\BIN>dir *.o
 Il volume nell'unità C è SATAN
 Numero di serie del volume: 20F3-5C25
 Directory di C:\Djgpp\BIN
PROVA    O             966  17/02/98  20.53 prova.o
PROVA1   O             952  18/02/98  19.10 prova1.o
CRT0     O           3.916  05/10/96  21.02 CRT0.O
         3 file          5.834 byte
         0 dir        30.015.488 byte disponibili
C:\Djgpp\BIN>make prova
gcc   prova.o   -o prova
ld.exe: cannot open -lgcc: File format not recognized
make.exe: *** [prova] Error 1
C:\Djgpp\BIN>
C'e' qualche file in cui devo smanettare per inserire delle info?
Chi sa dirmi qualcosa di utile?
Ciao ;)

 Chi sa dirmi qualcosa di utile?
nella mia home page ho qualcosa su DJGPP, compresi i file necessari, 
e da dove scaricareli. ho anche scritto alcune patch per gcc (per fargli
compilare i .asm) e per RHIDE (sintassi evidenziata per i .asm e traduzione in
italiano)
-- 
---
Ranger, email 
ran...@queen.it
http://members.tripod.com/%7Eranger_rg/

Newsgroup: it.comp.lang.c
Titolo: E se voglio usare la virgola invece del punto?

Ciao a tutti,
ho realizzato un programma che mi produce una tabella di long double
scrivendo con fprintf() su di un file .TXT .
Il problema è che devo importare i dati in un foglio di calcolo, per cui
devo rappresentare i numeri con la virgola e non col punto, come fa il C.
Come posso fare? Ho tentato di aggiungere a fine elaborazione una specie di
funzione "formattatrice" che sostituisce tutti i punti con delle virgole, ma
ne è uscito un pasticcio! Non ci capisco nulla di puntatori a file..  >:(
qualcuno ha un'idea?
Grazie per l'attenzione.
Angelo Marcandalli

Come posso fare? 
Dai uno sguardo alle routine in locale.h
Newsgroup: it.comp.lang.c
Titolo: Help! Primi programmi in C

Buongiorno,
riuscireste ad aiutarmi con questo esercizio?
"Ricerca il primo termine della successione di Fibonacci che supera NUM 
dopo aver letto NUM da tastiera"
 
Utilizziamo dev c++.
 
Ringrazio tutti per la cortese risposta.
 
Saluti
Emilampa
 
-- 
lyvyo

 
 
Se scrivi quello che hai fatto e dove hai problemi un aiuto arriva sicuro.
 
Ciao!
Newsgroup: it.comp.lang.c
Titolo: HELP

raga in C posizionare il cursori anzi far muovere i cursori (linux) come
si fa
HELPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP

 come si fa HELPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
<CONS>
	vi /usr/include/*curses*
</CONS>
	Alla prossima,
		Marco

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

Io utilizzo gcc e sto scrivendo un programma in cui mi serve la funzione
getch() che restituisce il valore del carattere inserito da tastiera senza
produrre output su schermo. Il problema è che getch() non e standard, come
si può ottener un effetto simile usando solo istruzioni standard?

"Saltini Roberto" ha scritto:

bhe', col gcc, ti consiglio le ncurses, non sono standard, ma sono 
multipiattafma



Questo e' in msc, non conosco la sintassi per gcc.
Funziona come la getch(), cioe' in caso di tasto funzione torna 0 ed
e' necessario effettuare una seconda chiamata che tornera' il codice
di scansione del tasto.
int Getch() {
    int chr;
    _asm {
	mov	ah, 8
	int	21h
	xor	ah, ah
	mov	chr, ax
    }
    return chr;
}
ciao, acc.   
a...@libero.it

e' necessario effettuare una seconda chiamata
seconda? magari :)
tu forse non sai quanti zeri mette il tasto F12 prima dello scancode...
diciamo piuttosto di continuare finchè ritorna qualcosa diverso da 0. E 
di contare gli zeri letti.

 di contare gli zeri letti.
No, ne basta uno (almeno in MS-DOS).
EMG

si puň ottener un effetto simile usando solo istruzioni standard?
No.

No, ne basta uno (almeno in MS-DOS).
prova ad usare il comando choice del DOS. Quando gli arriva un carattere 
sconosciuto (come lo 0, non specificabile tra le opzioni di choice) 
emette un beep. Schiaccia F12 e poi dimmi

tu forse non sai quanti zeri mette il tasto F12 prima dello scancode...
Dovrebbe essere uno solo (come tutti i tasti speciali).

 emette un beep. Schiaccia F12 e poi dimmi
Provato. Fa un beep solo. Comunque leggiti la documentazione dei servizi
del BIOS. Eccoti anche l'esempio riportato nella documentazione Borland:
#include <conio.h>
#include <stdio.h>
int main(void)
{
  int c;
  int extended = 0;
  c = getch();
  if (!c)
    extended = getch();
  if (extended)
    printf("The character is extended\n");
  else
    printf("The character isn't extended\n");
  return 0;
}
EMG

di contare gli zeri letti.
Mmmhhh... Che tastiera hai ?   :-)
ciao, acc.   
a...@libero.it

Dovrebbe essere uno solo (come tutti i tasti speciali).
allora si vede che ricordo male. Mi pareva i tasti funzione usassero in 
totale tre o quattro codici (credo quattro, a giudicare dalla 
disposizione sulla tastiera) e si distinguessero solo in base al numero 
di zeri binari

di zeri binari
Nein, nein !  I codici sono due, anzi a dire il vero uno solo. 
L'esempio che ho postato chiama una funzione DOS (int 21h), ho postato
quella perche' molto simile alla getch(), anzi probabilmente la
getch() usa la stessa funzione.
In realta' se chiamassimo direttamente la funzione del BIOS, questa ci
ritornerebbe un solo codice (lo scan code).
Il fatto che tu possa ritrovare quattro o cinque codici di ritorno
dopo aver premuto F12 non mi sorprende affatto, ricorda che i tasti Fx
sono programmabili percio'...
ciao, acc.   
a...@libero.it
Newsgroup: it.comp.lang.c
Titolo: Scusate l'ignoranza.

Ho iniziato a studiare il Linguaggio C
utilizzando il libro della Jackson di 
Kernighan e Ritchie e come compilatore
il vecchio Turbo C col sistema operativo MS-DOS.
Adesso mi chiedo, scusandomi per la mia ignoranza,
come faccio ad utilizzare le istruzioni indicatemi dal
libro, che suppongo siano per il sistema operativo UNIX,
con il compilatore e sistema operativo suddetto visto che
istruzioni, come ad esempio getchar(), non vengono supportate ???

...


Oppure molli il Turbo fetid C e installi il DJGPP che è pure gratis....


 istruzioni, come ad esempio getchar(), non vengono supportate ???
Il K&R2 (spero che tu abbia la seconda versione, la prima e' obsoleta)
descrive funzioni caratteristich di UNIX solo nel capitolo 8. Il resto tratta
questioni indipendenti dal sistema. Nel libro e' chiaramente riportato che
getchar e' una funzione di sistema il cui prototipo e' in stdio.h (l'hai
inclusa nel tuo file?) ed e' richiesta dalla standard ANSI. Se il Turbo C che
hai non supporta cio', non e' un compilatore ANSI-C. Controlla il manuale del
compilatore e verifica cosa dice riguardo al suo essere ANSI e verifica quali
funzioni sono supportate in stdio.h. Se concludi che non e' ANSI, dovresti
veramente cambiare compilatore. Il "vecchio" pre-ANSI C e' obsoleto e non
vale la pena tentare di programmare usandolo.
Ciao Paolo
-----------== Posted via Deja News, The Discussion Network ==----------
http://www.dejanews.com/
       Search, Read, Discuss, or Start Your Own

Newsgroup: it.comp.lang.c
Titolo: Time out per la connect()

Ciao a tutti!
Sto realizzando un piccolo portscanner (Win 95/98/ME, VC++ 5.0) e vorrei
fare in modo che il programma si connetta a tutte le porte (in un dato
intervallo) di un certo host. Il fatto č che usando la connect(), ci mette
una vita se la porta non č aperta (cosa che capita molto spesso
ovviamente!). Volevo settare un piccolo timer, ma come posso fare? Ho
pensato agli AsyncSocket, agli eventi dei socket, ai timer di Windows, e a
tante altre cose, ma alla fine non ho ottenuto granchč!
Come posso fare?
Grazie in anticipo,
Dome

(Win 95/98/ME, VC++ 5.0)
it.comp.programmare.win32

 Dome
Mi suona di sleep(secondi);
Ti mette il prog in attesa per tot secondi... va messa prima delle
connect... :) prova poi mi dici...
Newsgroup: it.comp.lang.c
Titolo: Lettura file

Ciao a tutti
Premetto che sono un neofita
Come posso fare a leggere un file così configurato:
n righe (non note a priori)
3 colonne
1 2 3
4 5
7 8 9
10 11 12
in modo da avere controlli sui dati
(per esempio dovrei capire che nella seconda riga
manca un dato)
Grazie mille
Paolo R.

 manca un dato)
puoi farlo in svariati modi.
Uno dei piu' semplici e' il seguente.
Stabilisci, in base alla tua conoscenza del dati di ingresso
quale e' la dimensione veramente massima di una riga,
in termini di caratteri.
Supponiamo che al massimo in una riga ci siano 300 caratteri.
(non ti preoccupare di sovradimensionare il buffer, lo
spreco di qualche centinaio di byte non e' un problema).
e dimensioni un buffer dove leggerai le varie righe del file:
vai a leggerti le info relative a fgets e sscanf
(in stdio.h)
#include<stdio.h>
.......
char buf[300];
FILE *f;
int letti, x, y, z;
/* apro il file di input */
f = fopen("cicciopasticcio.txt","r");
/* se ho provato a leggere al di la' del limite
del file allora ho finito ed esco dal ciclo */
while(!feof(f))
{
   /* metti a 0 il primo byte del buf*/
   buf[0]=0;
   /* questo mi serve per discriminare il caso
      di riga completamente vuota dal caso di fine del file */
   /* legge una riga, al massimo 299+1 char da f */
   fgets(buf,300,f);
   /* se non ho letto nulla allora buf[0] e' rimasto a 0
     e in tal caso  ciclo, cosi' probabilmente esco */
   if (buf[0]==0) continue;
  /* ho letto qualcosa ora scanno il buffer */
  letti = sscanf(buf,"%d %d %d",&x, &y, &z);
  /* ora in letti c'e' 0,1,2 o 3 a seconda di quanti
     valori ho letto in x, y, z
   e in base al valore della variabile *letti* processo
   i valori interi x y e z e ci faccio quel che ci devo fare */
} /* end del while */
Bisogna stare attenti quando si usa feof() perche' a differenza
di quello che pensano molti neofiti (che non hanno letto il manuale...)
feof(f) non controlla se si e' raggiunta la fine del file,
ma se si e' tentato di leggere dopo la fine del file,
quindi se non si fa attenzione si rischia di leggere 2 volte
l'ultima riga del file.
ciao,
v.
Newsgroup: it.comp.lang.c
Titolo: array dinamici...?

 Uso i puntatori?
Gli array dinamici in C esistono e si gestiscono attraverso i puntatori.
Es.:
int *pi = malloc( nn * sizeof int );
/* Qui posso utilizzare pi (quasi) come fosse un array di nn interi */
free( pi );
EMG

Uso i puntatori?
Si', ad entrambe le domande.
Gli array dinamici si implementano appunto utilizzando i puntatori.
Un esempio e' il seguente :
#include <stdio.h>
#include <stdlib.h>
main()
{
    int *array ;
    array = malloc( 50 * sizeof( int ) ) ;
    if ( array == NULL )
    {
       fprintf(stderr, "impossibile allocare l\'array\n" ) ;
    }
    else
    {
       printf( "\nallocazione di 50 interi riuscita\n" ) ;
       free( array ) ;
    }
    return 0 ;
}
--
Andrea Laforgia
andrea_...@bigfoot.com

int *pi = malloc( nn * sizeof int );
Attenzione : sizeof( int ).
--
Andrea Laforgia
andrea_...@bigfoot.com

        fprintf(stderr, "impossibile allocare l\'array\n" ) ;
E' necessario quel carattere di escape?
EMG

 Attenzione : sizeof( int ).
Ops... anche se non ho mai capito perché si chami "operatore sizeof" se
poi non posso usarlo in quel modo...
EMG

Newsgroup: it.comp.lang.c
Titolo: gcc on SGI

Premettendo che di C ne capisco poco, ho un problema con il gcc
2.7.2.3 patchato con f77 su di una Silicon Indy (IRIX 5.3). Ho
installato una copia precompilata del gcc suddetto, ma per tutti i
programmi che cerco di compilare ottengo lo stesso errore:
$ >make
        ../Compile L2  -P main.f
cat main.f | /lib/cpp -traditional  -I/home/dist/amber41/src/lib -P
-DF2C -DREGNML -DEWALD -DHAS_FTN_ERFC -DISTAR2  > _main_.f
g77 -c -O3 _main_.f
gcc: installation problem, cannot exec `as': No such file or directory
*** Error code 1 (bu21)
E' risolvibile o faccio prima a buttare tutto?
Grazie in anticipo.

 *** Error code 1 (bu21)
Pare che ti manchi l'assembler (o che non sia configurato).
Hai installato anche il pacchetto binutils (che contiene l'assembler)
???
-- 
Andrea Vettori
------------------------
vet...@computer.org
http://www.dei.unipd.it/~vettori
    (italiano)
http://www.geocities.com/ResearchTriangle/9236
   (english)

*** Error code 1 (bu21)
as č l'assembler per i sistemi Unix e Unix-like, tipo Linux. Il
problema č che evidentemente non hai --o almeno non ce l'hai nel
path-- l'assembler --ovvero l'eseguibile "as"--. Perň non so dove
dirti di cercarlo. Prova a chiedere a chi ti ha fornito la macchina.
Cordialmente,
Gianni Rondinini, programmer and designer at Pierre s.n.c.
e-mail: mailto:
pie...@mail.asianet.it
homepage: 
http://www.geocities.com/Eureka/Plaza/7153
Red Hat Linux user since 9/25/97
Windows NT Server user since 9/19/97
e-mail: mailto:
pie...@mail.asianet.it

E' risolvibile o faccio prima a buttare tutto?
il problema e` semplice: non trova l'assemblatore 'as'.
prova a dare 'gcc -print-search-dirs' e vedere in quali percorsi viene
cercaro as, oppure prova gcc -v.
in ogni caso `as` fa parte delle binutils, percio` forse non le hai
installate
--
[ranger, email: 
ran...@queen.it
]
ICQ# 6585343
Newsgroup: it.comp.lang.c
Titolo: una cosa strana...

Ciao a tutti,
Volevo chiedervi perchè nella lettura da un file della seguente matrice
abcd
efgh
ilmn
opqr
con l'espressione
for(i=0;i<4;i++){
  for(j=0;j<4;j++){
     fscanf(puntalfile,"%c",&mat[i][j]);}}
Il programma carica la seguente matrice
abcd
efgh
ilmn
o
tralasciando gli utlimi tre caratteri...
Grazie 1000 a tutti!
Enrico S.
--
Webmaster della Pagina NON Ufficiale del SonyCRX100
SonyCRX120,  SonyCRX140E/S, SonyCRX100EX, HP8100
HP8200, HP9100 & HP9200
http://www.freeweb.org/computer/SonyCRX100/

tralasciando gli utlimi tre caratteri...
Perche' e' come se leggesse :
abcd\nefgh\nilmn
--
Andrea Laforgia (ICQ 87230455)
"ci sono tre tipi di persone nel mondo : quelli che
 sono bravi in matematica e quelli che non lo sono."

 --
Probabilmente perchè il file è di tipo testo ed alla fine di ogni riga
viene letto il carattere '\n'.
HTH
gfb

Capito...
In che modo potrei aggirare il problema, continuando sempre a leggere un
carattere alla volta?
Inoltre perchè gli spazi non li stampa subito dopo le rispettive righe ma li
accumula tutti insieme al fondo?
Grazie 1000 per l'aiuto! E buone Feste a TUTTI!!!
Ciiips


Newsgroup: it.comp.lang.c
Titolo: S.O.S. Compilatore

Potreste indicarmi un compilatore c con manuale in italiano?
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Potreste indicarmi un compilatore c con manuale in italiano?
con manuale in ita ci stava il borland turbo c++ 3.0, comp in inglese
ma man in ita, troppo vecchio oramai
Antonio
Newsgroup: it.comp.lang.c
Titolo: Riduzione dimensioni file

Il testo da comprimere č contenuto in un file ed utilizza un assortimento di
parole limitato il cui elenco č contenuto in un altro file in modo tale che
ad ogni parola corrisponda un numero intero di 3 cifre.Nello stesso elenco
sono codificati: il punto,la virgola,ecc.,ed anche l'andata a capo,la riga
vuota.
Si deve esaminare il testo da compattare(che č contenuto in un
file);individuare gli elementi cui fare corrispondere un
numero(parole,interpunzioni e cosě via) e memorizzare il file cosě
ottenuto.Bisogna memorizzare i numeri,corrispondenti al file di testo,nella
maniera piů compatta possibile.
Io ho fatto cosě,se avete la curiosita' di leggere il listato e/o
correggerlo vi sarei molto grato:
#include<stdio.h>
#define MAX 20
char buf[MAX];
char *leggi_file(FILE *fmp,int);
int codifica(char *t,FILE *fpv);
void compatta(int,FILE *fpc);
main()
{
int comp,g;
FILE *fp,*fpv,*fpc;
char nomefile[MAX],*b;
do {
      printf("\nInserire nome file da compattare:");
      scanf("%s",&nomefile);
      fp=fopen(nomefile,"r");
}
while (fp==NULL);
fpv=fopen("voc.txt","r");
printf("\nInserire nome del file compattato:");
scanf("%s",&nomefile);
fpc=fopen(nomefile,"ab");
while((g=fgetc(fp))!='-') {
     b=leggi_file(fp,g);
     comp=codifica(b,fpv);
     compatta(comp,fpc);
}
fclose(fp);
fclose(fpv);
fclose(fpc);
}
char *leggi_file(FILE *fp,int g)
{
int c;
int i=0;
   c=g;
   if((c>='A' && c<='Z')|| (c>='a && c<='z')) {
do {
       if(c<='Z')
          buf[i]=c+32;
       else
          buf[i]=c;
       c=fgetc(fp);
      i++;
}
while ((c>='A' &&c<='Z') || (c>='a' && c<='z'));
fseek(fp,-1,1;
buf[i]='\0';
}
else {
  buf[i]=c;
  buf[i+1]='\0';
}
return(buf);
}
int codifica(char *t,FILE *fpv)
{
int codice,i=0,c,a;
if (fpv==NULL)
    fpv=fopen("voc.txt","r");
do {
a=t[i];
c=fgetc(fpv);
if((c)==a
    i++;
else  {
     i=0;
     do {
          c=fgetc(fpv);
}
while(c!='-' && c!='+');
c=fgetch(fpv);
}
}
while(t[i]!='\0' && c!='+');
fscanf(fpv,"5d",&codice);
fseek(fpv,0,0);return codice;
}
void compatta(int codice,FILE *fpc)
{
struct bellina {
          unsigned var:8;
          };
struct bellina *seby;
seby=(struct bellina *)malloc(sizeof(struct bellina));
seby->var=codice;
fwrite(seby,sizeof(struct bellina),1,fpc);
}

 Il testo da comprimere è contenuto in un file ed utilizza un assortimento
di
[megasnip]
Ma Huffman i codici omonimi cosa li ha fatti a fare? :))
larss
Newsgroup: it.comp.lang.c
Titolo: Re: Tempi di esecuzione con la sys/times.h

 CLOCKS_PER_SEC.
Si ma questa macro serve per dividere il valore dato dalla Clock(). Non
quelli della time()

Salve, rieccomi qui ad chiedere la vostra consulenza:
Devo avviare questi malefici test per misurare le prestazioni.
Allora ho scritto questa funzioncin:
long takeTime(struct tms old_time, struct tms new_time){
  clock_t u_time, s_time, r_time;
  /* User time */
  u_time = (new_time.tms_utime + new_time.tms_cutime)
          -(old_time.tms_utime + old_time.tms_cutime);
  /* System time */
  s_time = (new_time.tms_stime + new_time.tms_cstime)
          -(old_time.tms_stime + old_time.tms_cstime);
  /* Real time */
  r_time = u_time + s_time;
  return ((long)(r_time*CLOCKS_PER_SEC));
}
Poi ho dichiarato:
struct tms old_time, new_time;
Quindi dove devo testare:
times(&old_time);  <------ "parte il conteggio"
ogni volta che mi serve il tempo trascorso faccio:
times(&new_time);
e quindi stampo:
fprintf(F[fi], "\n%d\t%f\t%d\t\t%d\t\t%d\t%d <<< miglioramento",*iter,
alpha, cobjv, wsat, *bestv, takeTime(old_time, new_time));
Ma mi esce un numero enorme. Non dovrei ottenere i secondi?
Inoltre, si potrebbe avere anche una precisione su decimi di secondo?
Ho letto la documentazioni sullo Stevens e pensavo di aver fatto bene,
invece.....

 }
Ho risolto.
Il fatto è che i vari _time non sono clock_per_sec ma vanno divisi per un a
costante che si ottiene con:
sysconf(_SC_CLK_TCK)
Ciao

 
time() ritorna i secondi.  Quella che hai usato e` probabilmente la times().
In ogni caso hai ragione, scusami.
Ciao
Giovanni


 time() ritorna i secondi.  Quella che hai usato e` probabilmente la
times().
Esatto, era la times().
Newsgroup: it.comp.lang.c
Titolo: info su Visual Studio 2005 Express/Professional

Devo modificare un progetto scritto tempo fa in liguaggio C con Visual 
Studio 6.
Ora ho a disposizione Visual Studio 2005 Express (di cui ho installato 
solo il pacchetto Visual C++).
Ho aperto il progetto e il VS mi ha chiesto di convertirlo e una volta 
aperto, il compilatore mi dà una sfilza di errori, di file di header 
mancanti ecc. che il Visual Studio 6 non mi dava minimamente.
Come mai?
Dipende dal fatto che è la versione Express che non supporta il 
linguaggio C, ma solo il C++? Passando alla Professional cambierebbe 
qualcosa?
O dipende dal fatto che il progetto è stato inizialmente scritto con il 
Visual Studio 6?
Grazie

Visual Studio 6?
Dipende solo dal fatto che il VC++6 rispettava lo standard C/C++
di quei tempi. Lo standard e' evoluto e il VC2005 si e' adeguato.
Controlla bene i messaggi di errore e i warning, essi stessi ti
indicheranno la soluzione che, in pratica, sara' quella di
sostituire qualche header e aggiornare alcune funzioni.

 
it.comp.programmare.win32
Ciao Enrico

Newsgroup: it.comp.lang.c
Titolo: link cercasi

sapreste indicarmi qualche buon sito da cui ricavare dei codici sorgente?
grazie

sapreste indicarmi qualche buon sito da cui ricavare dei codici sorgente?
http:\\
sourceforge.net
Newsgroup: it.comp.lang.c
Titolo: long double: qualcosa non torna sui limiti...

Salve a tutti,
questa piccola porzione di codice:
#include <stdio.h>
#include <limits.h>
#include <float.h>
int main()
{
     printf("long double %d radix digits\n", LDBL_MANT_DIG);
     printf("\t[%Lg ; %Lg]\n", LDBL_MIN,LDBL_MAX);
     printf("\n");
}
mi stampa a video dei valori che non riesco ad interpretare, e per la 
precisione:
	long double 64 radix digits
         [0 ; -1.#QNAN]
Potete darmi qualche buon consiglio?
Grazie e buon week-end,
Giulio


Per curiosita': che compilatore usi? roba Microsoft?
Ciao
-- 
Cybertoldo
Per rispondermi via email, sostituisci moc.liamg con 
gmail.com

 Potete darmi qualche buon consiglio?
Forse un bug nella libreria. LDBL_MIN è la minima quantità non nulla
rappresentabile da un long double; dall'output sembra che la funzione di
conversione usata dalla printf faccia l'approssimazione a 0. Stessa
cosa per LDBL_MAX.
E` anche possibile che la printf accetti il prefisso 'L' ma in realtà
tratti il numero passato come un double, ma sembra più probabile un
errore nell'algoritmo usato per creare la stringa stampabile.
LUca
-- 
"Fare l'amore con dieci donne e` fantastico, soprattutto perche` ti
 presentano un sacco di amiche." -- Fabio Di Iorio

 Potete darmi qualche buon consiglio?
Cambiare compilatore? Su linux/gcc ho
long double 64 radix digits
        [3.3621e-4932 ; 1.18973e+4932]
 
Ciao
  Andrea

 Per curiosita': che compilatore usi? roba Microsoft?
Lavoro su un PC con WinXP. Come ambiente di sviluppo uso wxDevc++ e come 
compilatore gcc (credo sia un porting per windows).
Ciao e grazie,
Giulio

Newsgroup: it.comp.lang.c
Titolo: Boot sector

domanda :
Come faccio per leggere , scrivere nel boot sector sia di un floppy disk sia
dell' hd ???
Ovviamente in c, (djgpp) per msdos ??


wrote:


...


Newsgroup: it.comp.lang.c
Titolo: terminare un programma in background

salve,
innanzitutto la domanda č relativa a windows:
come posso fare a killare un programma che č in esecuzione in
background?
cioč: ad esempio fare un programma che appena parte elimina
dall'esecuzione in background l'antivirus senza complicazioni come
"sei sicuro di voler terminare l'applicazione?"
Grazie ciao

 innanzitutto la domanda č relativa a windows:
innanzitutto hai sbagliato NG:
it.comp.programmare.win32

 "sei sicuro di voler terminare l'applicazione?"
   Innanzitutto sei OT.
-- 
Alla prossima,
Marco

Marco
Ciao

>Alla prossima,
Secondo te un ng che si chiama it.comp.programmazione.win32 di cosa
tratta?
Secondo te visto che per farlo devi usare
1) una system call
2) una api
Nessuna delle 2 dipende dal linguaggio, ma dipendono dal sistema
operativo.
Mox
Newsgroup: it.comp.lang.c
Titolo: turbo c

mi è stato invgiato il turbo c ma il problema è che non so come fare per
digitare i caratteri tipo { }poichè il compilatore è in dos, quindi la mapa
caratteri di windows non funzia.
ciao loris

 wrote in message
nEit4.11565$qv.1...@news.infostrada.it...

schiaccia il tasto Alt, tienilo premuto, digita sul tastierino numerico 123
e rilascia il tutto.
ottieni {
per la parentesi chiusa usi Alt+125
ciao ciao
marco
--
Marco Coppo
University Of Sheffield

 ciao loris
...povere orecchie mie cosa devono sentire....
Lo sapevo che prima o poi troppe cliccate di mouse avrebbero portato a
questo....
Ivan Molella

Ciao abbiamo scaricato il turbo C della borland,
ma non riusciamo ad installarlo.
puoi mandarci la procedura passo passo?
                    Grazie    Luca & Nevio
* Sent from AltaVista 
http://www.altavista.com
 Where you can also find related Web Pages, Images, Audios, Videos, News, and Shopping.  Smart is Beautiful

 wrote:
ALT+123 (ma tienilo pigiato per bene)
e ALT+125 uno per { e l'altro }
Augusto Pucci
Webmaster di Prospektiva On-line
http://go.to/Prospektiva

puoi mandarci la procedura passo passo?
Lo dovete copiare tutto in una cartella sotto dos e lanciare da li
l'instakll



Purtroppo mi sa che hai ragione in ogni caso un pò di modestia no fa mai
male
loris

 loris
Ancora con questa cosa della modestia!
Ti consiglio di spendere i tuoi soldi(o quelli dei tuoi genitori)  anziche'
in telefonate al provider, in qualche buon libro che spieghi un po le basi
dell' informatica, e di come un SO gestisca il set dei caratteri che ti
ritrovi disegnati sulla tastiera,poi ne riparliamo,visto che non ritengo la
conoscenza del set di caratteri asci motivo di chissa' quale arcana
conoscenza informatica tale da rendere qualcuno non modesto.
Ivan Molella
Newsgroup: it.comp.lang.c
Titolo: Aiuto Stringhe

Salve a tutto il NG sono Fr@golone,
ho gia' postato un messaggio su questo argomento e molti mi hanno dato una
mano, ma il problema attuale e' il seguente:
Voglio scrivere un programma in C che mi permetta di leggere una stringa da
tastiera e farlo nella maniera piu' generale possibile, svincolandomi da
qualunque limite di lungezza dichiarato a priori.
Questo significa che ho gia' scartato tutte le soluzioni che comprendono
l'utilizzo di vetori statici che dinamici.
Ringrazio anticipatamente tutti coloro che mi daranno una mano in questa
impresa.

 l'utilizzo di vetori statici che dinamici.
In C una string _e'_ un array di caratteri; se scarti a priori l'uso di
arrays mi sa che non ne vieni fuori.  Perche' non allochi un array a
runtime con malloc, non leggi un carattere alla volta e, se necessario,
non aumenti le dimensioni del buffer con realloc?  
-- 
Maurizio Loreti                      
http://wwwcdf.pd.infn.it/~loreti/mlo.html
Un. of Padova, Dept. of Physics - Padova, Italy          
lor...@padova.infn.it

 impresa.
L'esmpio seguente puo' non essere letteralmente corretto, correggilo:
#define MAXLEN 80
char *string;
string = malloc(MAXLEN);
string[0] = '\0';
while(fgets(string(size(string),MAXLEN,stdin)) {
if(strchr(string,'\n'))
  break;
else
  if(!realloc(string,strlen(string)+MAXLEN))
  {
     printf("Memory problem\n");
     break;
  }
}
Ciao Paolo
-----------== Posted via Deja News, The Discussion Network ==----------
http://www.dejanews.com/
       Search, Read, Discuss, or Start Your Own    

l'utilizzo di vetori statici che dinamici.
Un "vettore dinamico" (cioe` gestito con malloc/free/realloc) non ridurrebbe
la generalita` della soluzione.  Puoi naturalmente usare anche altri approcci
di gestione della memoria dinamica, come ad esempio una lista linkata di
singoli caratteri letti, ma l'overhead (di memoria, e di run-time) sarebbe
anche maggiore; inoltre, a parte la "lettura da tastiera", presumo tu voglia
fare anche qualche ALTRA cosa con questa "stringa" -- e tutto quello che
il C ti offre per "fare checchessia" con (cosiddette) "stringhe" si basa
sull'ipotesi che esse siano memorizzate in array di char, quindi, se non
vuoi memorizzarla cosi`, dovrai riscriverti anche tutto il resto di una
"libreria di gestione stringhe".
Non riesco a visualizzare un caso pratico, oggi, in cui un approccio del
genere avrebbe il minimo senso, visto che il C++ offre gia` ottime
funzionalita` di gestione stringhe, ed esistono compilatori C++ almeno
"vagamente usabili" per praticamente qualsiasi ambiente d'interesse
(certamente usabili abbastanza per aggiungere, alla base C, la
singola classe string, o sue varianti come rope, ecc); a confronto dello
sforzo necessario per rifare un'intera libreria di gestione stringhe,
certamente quello occorrente per passare a C++ dev'essere minore.
Alex
Newsgroup: it.comp.lang.c
Titolo: CERCASI PROGRAMMATORE

 
          Salve a tutti,
sto cercando un buon programmatore per commissionargli la realizzazione di
un un semplice software.
Chi č interessato puo' contattarmi al seguente indirizzo:
bonanno...@tiscali.it
 
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 un un semplice software.
Questo gruppo di discussione ha come argomento il linguaggio C, non le 
offerte di lavoro.
-- 
Enrico `Trippo' Porreca

Newsgroup: it.comp.lang.c
Titolo: BigNum? o altre librerie?

Ciao a tutti,
ho bisogno di una libreria per trattare numeri con molte cifre; nello 
specifico, avreiu bisogno di trattare con accuratezza termini anche 
molto piccoli della forma
exp(-a) * pow(b,k) / fattoriale(k)
con a reale "grande", b ~ 1 e k intero
Vorrei chiedervi quale libreria fa più al caso mio, visto che avrò 
bisogno di tipi sia int che double, e soprattutto vorrò applicare le 
funzioni exp, pow e fattoriale su questi valori!
Grazie mille per ogni risposta
andre

 con a reale "grande", b ~ 1 e k intero
la libreria per interi, razionali e float della gnu, ovvero GMP
andrebbe anche bene (e' molto buona), ha il fattoriale e
anche la potenza di float, ma non ha l'exp di float.
D'altra parte costruirsi una funzione che calcola exp non
e' molto difficile, se sai un po' di analisi matematica, un po'
di calcolo numerico e naturalmente  un po' di programmazione.
Altre librerie non le conosco perche' io di solito uso solo
interi.
ciao,
v.

 di calcolo numerico e naturalmente  un po' di programmazione.
e aggiungerei un po' di matematica computazionale...

 pow e fattoriale su questi valori!
Stai parlando di MIRACL. :-)
Cristiano

Newsgroup: it.comp.lang.c
Titolo: aiuto urgente

causa esame vorrei chiedervi se per favore mi potete auitare sto cercando un
sito da dove poter scaricare il C-RHIDE datemi una mano la mia e-mail č
gril...@libero.it

 
gril...@libero.it
All'indirizzo 
http://www.delorie.com/djgpp/
.
EMG
Newsgroup: it.comp.lang.c
Titolo: Come scrivo in memoria

Salve a tutti,
Sono un neofita del "C" ho un interrogativo da porre.
Ho scritto il seguente prg che fa uso dei puntatori, il mio problema č
tentare di azzerare delle locazioni di memoria in questo modo:
#include <stdio.h>
int main (void)
{
 char x[5]={125, 10, 20, 30, 60};
 int i;
 char *px;
 px=&x[0];
 for (i=0;i<=4; i++) {
 printf ("\nLa locazione %d", *px);
 printf (" era %d", px);
 &px=0;
 printf (" adesso e' azzerata %d", px);
 *px ++;
 }
 return(0);
}
se nonchč non mi e' permesso operare con &px=0 per azzerare il contenuto di
px come mai ?
Come posso risolvere il tutto ?
Grazie.

px come mai ?
Utilizzare a sinistra di un assegnamento l'operatore & è un errore in
quanto si presuppone che il nome della variabile - non importa il tipo -
rifersca già da sola ad un'indirizzo di memoria.
Comunque è impossibile modificare un indirizzo, al massimo puoi segnalare
che il puntatore non punta a nulla assegnadoli o 0 o null.

px come mai ?
Utilizzare a sinistra di un assegnamento l'operatore & è un errore in
quanto si presuppone che il nome della variabile - non importa il tipo -
riferisca già da sola ad un indirizzo di memoria.

Newsgroup: it.comp.lang.c
Titolo: ottenere la grandezza di un file...

come posso salvare in una variabile la grandezza di un file????io uso la
funzione fgets(memoria2,15,stream01); per leggere da uno stream01(stream)
16(sarebbero le 15 lettere della frase "ciccio parlami" più il NULL) e poi
infine memoria2(che sarebbe l'array per accogliere la stringa). il problema
sta nel fatto che nn sò quanti byte(lettere) e' composto il file quindi nn
saprei come ottenerlo...stavo pensando a un sizeof() xò nn mi viene nessun
modo per sfruttarlo....conoscete qualke scorciatoia???

 ha scritto nel messaggio
news:_QWKa.260078$g92.5...@news2.tin.it...

un metodo potrebbe essere riposizionarsi all'inizio del file e leggere un
byte alla volta fino alla fine del file incrementando ogni volta un
contatore.

 contatore.
Non credo sia un metodo buono. Rallenta il programma.
Poi, se hai un file di 1GB ti si impianta il PC.
Ecco una funzione che ho scritto io che fa questo lavoro:
unsigned int fsize(char *file)
{
   unsigned int pos;
   FILE *fd = fopen(file, "rb");
   if (!fd) return 0;
   fseek(fd, 0L, SEEK_END);
   pos = ftell(fd);
   fclose(fd);
   return pos;
}
Questa funzione si posiziona alla fine del file e poi richiede la sua
posizione. La posizione restituita da ftell mi dice quanti byte ci sono
dall'inizio dello stream fino a questo punto. In questo modo anche avendo
un file di 2GB, mi dice immediatamente quanto e' grande tale file.
-- 
Vladislav Valtchev

 ha scritto nel messaggio
news:2QXKa.150355$pR3.3...@news1.tin.it...

Devo dire la verita entrambi i casi potrebbero servirmi.....il fatto e che
io devo elaborare la stringa lettera per lettera quindi dovrò usare il primo
metodo xkè nn credo che si possa caricare 1 gb di dati. cmq mi rifarò
sentire per farvi sapere cosa ho combinato ^^ grazie :D

 Ecco una funzione che ho scritto io che fa questo lavoro:
Questo funziona (ed e' l'unico modo portabile per farlo) a 2 condizioni:
- che il file sia aperto in modalita' binaria (per i sistemi in cui questa 
  differenza esiste)
- che la dimensione del file possa essere contenuta in un long
Il modo migliore e' usare la primitiva del sistema operativo che usi per
scoprire la dimensione del file, senza troppi giri.
-- 
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: problema con l'I/O

Sto facendo un piccolo programma è ho un problema con la funzione getchar()
perchè bufferizza l'input da tastiera. Io vorrei leggere un solo carattere 
buttando via eventuali altri caratteri immessi per sbaglio. Leggendo su un 
manuale ho visto che la funzione getch() (inclusa in conio.h) fa proprio 
quello che mi serve.
Il fatto è che sto programmando sotto linux e la libreria conio.h non è 
presente. Qualcuno saprebbe dirmi come risolvere il problema?
grazie

 ha scritto nel messaggio
news:9tua8e$d34$1...@pegasus.tiscalinet.it...

ncurses?

Abacuc wrote:

come funziona e quale header devo includere?

come funziona e quale header devo includere?
man ncurses
/usr/doc/ncurses
In bocca al lupo!
Newsgroup: it.comp.lang.c
Titolo: chiamate al S.O.

Come si fa a: chiamare un comando del sistema operativo (WinNT) da un
programma scritto in C.
Mi interessa anche la chiamata di comandi dos.
Ciao

 programma scritto in C.
L'unica funzione standard è system().
EMG

Mi interessa anche la chiamata di comandi dos.
In questo caso "system()" dichiarata in "stdlib.h".
esempio :
#include <stdlib.h>
int main()
{
    system("DIR /B");
    return 0 ;
}
Skyscraper (apprezzatelo adesso : eviterete la coda)
----------------------------------------------------
 
andrea_...@bigfoot.com
----------------------------------------------------
--
Posted from 
itaca.ulysse.it
 [195.223.254.1]
via Mailgate.ORG Server - 
http://www.mailgate.org

Newsgroup: it.comp.lang.c
Titolo: Espressioni regolari -> Librerie ANSI C?

Ciao gente,
sapete per caso dove posso documentarmi riguardo le espressioni
regolari in ANSI C?
Esistono delle librerie (o comunque un modus operandi) che posso
studiare e usare?
Su che libri o siti posso documentarmi?
Qui non ho buone librerie informatiche (nemmeno di altri ambiti a dir
la verità -.-") quindi se mi consigliate pure siti su cui acquistare
libri in merito ve ne sarò grato.
Grazie mille
Franco

 libri in merito ve ne sarò grato.
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   < 
http://giovanni.homelinux.net/
 >

 in ANSI C?
Lo standard ANSI C non definisce il supporto per le espressioni regolari.
Queste sono invece definite nello standard POSIX (che include lo standard 
ANSI C):
http://www.opengroup.org/onlinepubs/009695399/basedefs/regex.h.html
 [1]
Un altro standard "de facto" è quello definito in Perl; la libreria pcre 
(Perl Compatible Regular Expression) è multipiattaforma.
[1] Questo non è lo standard POSIX ma la "Single UNIX Specification", che 
però dovrebbe essere identico a POSIX (trovi maggiori informazioni sul 
sito che ho linkato).
Ciao  Manlio

Grazie a tutti e 2, mi avete dato una buona traccia da seguire :)

Newsgroup: it.comp.lang.c
Titolo: Convertire str to float

esiste una funzione che mi converte una stringa unemerica in un float o 
in un numero????
GRAZIE
<<SAX>>

 in un numero????
atof, atoi e simili
-- 
No matter. Try again. Fail again. Fail better.
Newsgroup: it.comp.lang.c
Titolo: AIUTO CERCO MANUALE IN RETE PER C++ E TPW

Cerco un manuale in italiano reperibile dalla rete per il C++ della
Borland versione 4 e per Turbo Pascal per Windows.
In piu' volevo sapere perche' mi da errore il programma sopracitato
della Borland se inserisco un codice in C, mi hanno detto che il
programma dovrebbe supportare il C ... chiedo spiegazioni.
Grazie in anticipo ...
Werewolf: "Il disperato"!
gio...@usa.net

programma dovrebbe supportare il C ... chiedo spiegazioni.
Certo che lo supporta !!!!
Andrea
----------------------------------------
"Meglio cieco che negro" (Stevie Wonder)
----------------------------------------

Newsgroup: it.comp.lang.c
Titolo: IMMAGINI RGB

Avrei un problema.
1. Come aprire una immagine RGB ad esempio BMP in c?
2. Come scomporla nei singoli canali Red, Green e Blue e memorizzare i dati
dei singoli canali in vettori (o matrici)? Vorrei alla fine
dell'elaborazione sull'immagine avere tre differenti vettori che
contengano i valori numerici delle 3 diverse componenti.
3. Esiste un modo analogo per ottenere il vettore della luminositŕ?
Grazie, Marco.

www.imagemagick.org
ciao
Alberto


Newsgroup: it.comp.lang.c
Titolo: DevC exe files

Ciao a tutti,
ho installato da poco DEVC 4.
come mai quando mando in esecuzione un file il prompt compare e scompare
subito dopo l'esecuzione?
como posso fare per lasciare la finestra visibile?
ho provato con un getchar() e funziona, ma ci deve pur essere un'altra
soluzione, che so, un'opzione da spuntare da qualche parte.
grazie,
mirko
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 como posso fare per lasciare la finestra visibile?
Aprire una finestra di MS-DOS, e lanciare il tuo programma da lě.
-- 
Andrea Bergia - studente              Linux Registered User #281550

 wrote in message
fbccfbe35163acf2681...@mygate.mailgate.org...


Newsgroup: it.comp.lang.c
Titolo: compilatore EGCS

leggendo DEV di novembre 99 trovo questa frase "Per le macchine Intel
poi, che costituiscono la grande maggioranza dei sistemi di fascia
bassa, solo compilatori come EGCS riescono a trarre il massimo dalle
CPU di ultima generazione" e come riferimento c'e' l'indirizzo
http://www.cygnus.com/egcs
Qualcuno di voi ne ha sentito parlare o, ancora meglio, l'ha usato?
-------------------
Aranar


Ora esiste solo il gcc (per diverse piattaforme).
EMG

 Qualcuno di voi ne ha sentito parlare o, ancora meglio, l'ha usato?
Si`, da oltre un anno si chiama di nuovo "gcc", comunque l'ho
usato sotto entrambi i nomi.
L'affermazione non mi sembra propriamente corretta; secondo
me i generatori di codice dell'Intel primeggiano nel "trarre
il massimo dalle CPU di ultima generazione".  Vedi V-Tune,
sotto 
www.intel.com
.
Alex

 Qualcuno di voi ne ha sentito parlare o, ancora meglio, l'ha usato?
Scherzi??? Il progetto egcs, se non ho capito male, ha assimilato il
gcc, quindi non sono piu' due progetti distinti. Il gcc e' il
compilatore per eccellenza in Linux, e il djgpp e' il porting del gcc
per dos.
--
 Ciao, Bianco.
 Reply to 
luca....@tiscalinet.it
Newsgroup: it.comp.lang.c
Titolo: nome del file in *char da struttura di tipo FILE

Salve, vi giro una piccola domanda che mi sta un po' assillando:
E' possibile ricavare il nome del file in *char da una struttura tipo FILE ?
Oppure...esistono altri modi per venirne a conoscenza?
Grazie in anticipo,
Amlugil

 Oppure...esistono altri modi per venirne a conoscenza?
Quando hai aperto il file hai dovuto passare a fopen() il suo nome. 
Quindi lo sai :-)
Forse esistono altre possibilita` non-standard: per informarti chiedi 
sul newsgroup relativo alla programmazione sotto il tuo sistema operativo.
-- 
Enrico `Trippo' Porreca

...


No.
Claudio

Ma per caso qualcuno sa se usando le specifiche di codifica ELF e non
quelle, cui programmo, a.out è più facile-possibile questa cosa del ricavare
il nome del file?
Amlugil

 il nome del file?
Ovvero? In "C" non ha la piu' pallida idea di cosa sia il formato ELF
e il formato ELF esiste indipendentemente dal fatto che il programma
sia stato realizzato o meno in "C" (quindi dall'esistenza o meno di
FILE).
Ergo per sapere il non del file con cui hai a che fare:
1) lo passi alla funzione e apri il file all'interno della funzione;
2) lo passi alla funzione assieme al puntatore FILE*;
3) lo scrivi in una variabile globale cosi lo hai sempre a disposizione.
Se hai solo il puntatore a FILE NON ESISTE NESSUN METODO STANDARD CHE
TI PERMETTA DI RISALIRE AL NOME DEL file ASSOCIATO.
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Newsgroup: it.comp.lang.c
Titolo: Manuale introvabile

Salve a tutti.
Sono andato in un paio di librerie a cercare "Linguaggio C" di K&R, ma non
l'ho trovato. Consultando il catalogo lo abbiamo trovato, ma l'unica
indicazione che si è trovata è stato l'anno di pubblicazione e il numero di
pagine (oltre a varie altre).
Il libro del catalogo è del 1989 e sono 640 pagine, costo 46.000. Devo
ordinarlo, ma non vorrei ordinare la prima versione. Qualcuno saprebbe darmi
qualche altra informazione in merito?
Grazie, e ci si risente presto.

Grazie, e ci si risente presto.
Di niente...
Ciao

 wrote in message
3a571f20...@news.tin.it...


 qualche altra informazione in merito?
 
http://www.jacksonlibri.it
  ISBN: 88-7056-443-6

Davide wrote:

Se vuoi ho un paio di manuali in formato .txt che, se sei agli esordi
ti saranno molto utili: ci studio io visto che vorrei imparare questo
tanto discusso linguaggio.
Mandami una e-mail di richesta e te ne do un paio, uno base e un altro
avanzato soprattutto nella terminologia.Nulla da togliere al primo,
molto forbito nel linguaggio.
Saluti
                                                                    Lucky
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Non c'è nulla fuori dell'uomo che entrando in lui possa contaminarlo,
sono invece le parole che escono dall' uomo a contaminarlo.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Newsgroup: it.comp.lang.c
Titolo: Puntatori nulli

Ciao a tutti.
Mi ritrovo ad approfondire alcune cose, leggendo
qua e la'. Sono rimasto incuriosito dal modo
portabile di assegnare un valore nullo ad un
puntatore.
Uno dei testi che ho letto e che si riferisce in
particolar modo al mondo Unix dice semplicemente
di porre a 0 il puntatore, tipo...
*ptr=0;
Su del materiale indicato su questo stesso NG che
ho scaricato da poco si consiglia invece di usare
la macro NULL...
*ptr=NULL;
e cosi' nelle condizioni
if (ptr==NULL)
Domanda:
anziche' (ptr==NULL) posso usare    (!ptr)
per garantire portabilita', oppure la (!ptr)
viene interpretata come (ptr==0)?
GRazie.

 viene interpretata come (ptr==0)?
Puoi tranquillamente utilizzare
(!ptr)
anzi sembra la soluzione migliore.
EMG

anzi sembra la soluzione migliore.
E' solo stilisticamente piu' elegante o anche piu'
veloce una volta compilata?
Grazie :-)

Io comunque consiglio la prima forma.
Quale, con NULL ?
Augusto Pucci
Webmaster di Prospektiva On-line
http://www.prospektiva.it


Comunque in Stdio.h c'è la define
#define NULL  0
visto che la libreria è standard non ci dovrebbero essere problemi di
portabilità
--
________________________________
per rispondermi iliasba(at)
tin.it
bye Brain

 portabilità
No ma definendolo come ((void*)0) potresti salvarti in fase di
compilazione dall'
errore di utilizzare una variabile che non e' un puntatore credendo che
di puntatore si tratti.
ES:
    char ptr = NULL = ((void*)0) ;    -------> Warning del compilatore
    char ptr = NULL = 0 ;                 -------> Nessun Warning.
Ivan Molella.

 portabilità
Però quel #define in alcuni compilatori è o era diverso e quindi perché
non utilizzare lo zero che è la costante sempre corretta per indicare un
puntatore che non punta a niente?
EMG

 EMG
Perche' a fare troppo i furbi a volte ci si rimette le penne.
Ciao Angelo.

 Perche' a fare troppo i furbi a volte ci si rimette le penne.
In che senso? Utilizzare la costante zero è perfettamente corretto. Il
simbolo NULL può servire solo a differenziare visivamente
l'inizializzazione o il test di un puntatore con quello di un tipo
numerico.
EMG

 numerico.
   Hai perfettamente ragione. Se trovo scritto
   Head = 0;
   penso che qualcuno stia azzerando un variabile intera, se trovo scritto
   Head = NULL;
   penso che la variabile sia un puntatore.
   Perche' creare confusione inutile?

 puntatore che non punta a niente?
Solo per leggibilità... o forse è più una mia vecchia abitudine.
Alla fine si tratta di scegliere tra leggibilità (io sono da sempre abituato
ad usare NULL, ma è questione di gusti) e portabilità (cmq mi pare che i
problemi siano irrisori).



Boh, mi sembrava ci fosse un problema ad utilizzare NULL ma, dopo aver
cercato un po' nelle FAQ, forse mi sbaglio io.
EMG
Newsgroup: it.comp.lang.c
Titolo: [OT] concatenazione "artigianale"...

Scusate l'OT, è più un problema di logica, che di programmazione comunque...
Dovrei concatenare due variabili, m, r. (per concatenazione intendo la
giustapposizione delle striga di bit che identifica m, con quella che
identifica r). Non sono stringhe, sono BIGNUM, un tipo definito in una
libreria di OpenSSL, che ovviamente non ha funzioni proprie per la
concatenazione di variabili di questo tipo.
Pensavo di risolvere il problema in questo modo:
m_shiftato := "shift_left(m) di un numero di bit pari a quelli di r";
m_concat_r := m_shiftato + r;
(La libreria definisce lo shift left e la somma)
Fila o c'è qualche controindicazione?
Grazie

Scusa ma concatenare cosa significa per te?
Perchè se intendi concatenare TUTTI i bit di una variabile con TUTTI i 
bit dell'altra, otterrai un risultato che in dimensioni di bit è il 
doppio del BIGNUM (qualunque dimensione abbia un BIGNUM).
-- 
Quando noi ignoranti eravamo di più, tutto era più bello (A. Celentano).
  ___   _   ___ _  _______   _______ ___
|   \ /_\ | _ \ |/ / _ ) \ / /_   _| __|
| |) / _ \|   / ' <| _ \\ V /  | | | _|
|___/_/ \_\_|_\_|\_\___/ |_|   |_| |___|

Comunque si, il tuo ragionamento è giusto :)


 
Perchè, quale altro significato vuoi dargli?
Scusa, forse ragiono in termini di "sicurezza" dove spesso, quando si dice
di passare ad un algoritmo la concatenazione di "a" e "b", si intende
appunto "ab". Nel caso di stringhe di bit "111" | "000" = "111000".
( "|" indica concatenazione)

 ( "|" indica concatenazione)
Appunto.
Ripeto, il tuo ragionamento è corretto (shift + somma), ma il risultato 
della concatenazione richiede una variabile di dimensioni doppie a 
BIGNUM. Possiedi quel tipo di dati?
Altrimenti affidati agli array, che forse è meglio.


 Altrimenti affidati agli array, che forse è meglio.
La cosa intressante dei BIGNUM è che la gestione della loro dimensione è
dinamica (infatti si lavora con puntatori a bignum) per cui non serve
nessuna riassegnazione di memoria nel caso di un'operazione come quella
descritta. E' totalmente a carico delle procedure chiamate in causa.
Ciao
        F

Ah beh allora tutto ok :)


Newsgroup: it.comp.lang.c
Titolo: Turbo C++ 4.5 per Windows

Mi dovrei preparare specificamente su questo compilatore per
delle gare di programmazione che avvengono con esso.
Qualcuno mi saprebbe indicare dove trovarlo o (almeno)dove
cercarlo con qualche probabilità di successo?
--
Paolo Giarrusso



www.borland.com
E cerchi i rivenditori per l'Italia. ;-)