mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c
Titolo: controllo if che fallisce (!)

Buonasera a tutti.
Ho una porzione di codice (progetto Win32) nella quale avviene questo 
controllo:
{
float pippo;
    .............
     pippo = a;
(*) if( pippo<=0 )
        exit( 0 );
    .............
}
Veniamo al punto: sia usando MS VS 6 che MS VS .NET in debug
mettendo un break nel punto contrassegnato da asterisco ovvero laddove il
valore
della variabile float è già stato assegnato pari ad "a" e cambiando 
(shift+F9 etc...) il valore della variabile pippo
con uno valore
compreso tra 0 e 1 (per esempio 0.3) il controllo esegue l'istruzione 
exit( 0
) nonostante lo statement "pippo<=0" sia correttamente segnalato come
false.
Nella mia professione non mi è mai capitato alcunché di simile!
La cosa ancora più strana è che se tolgo la condizione di uguale all'if
ovvero:
    .............
     pippo = a;
(*) if( pippo<0 )
        exit( 0 );
    .............
il problema non si verifica ( non viene eseguita la exit ).
Vi chiedo cortesemente di aiutarmi perché sto vagando nel buio.
Grazie a chi vorrà rispondermi.
Distinti saluti,
S. 

"S." ha scritto

Faccio un'ipotesi.
Quando modifichi la variabile pippo "a mano", ne modifichi il valore nella
locazione di memoria che contiene la variabile.
In realtà però il valore di pippo usato nell'if non viene riletto dalla
memoria, ma viene preso da un registro del micro su cui stai facendo girare
l'applicazione che già contiene il valore di pippo a seguito della
precedente assegnazione (l'ottimizzatore del compilatore ha tradotto queste
istruzioni in assembly in modo intelligente eliminando gli accessi inutili
alle memoria quando deve usare il valore delle variabili).
Lo statement ti viene segnalato come false perchè penso che l'ambiente di
sviluppo vada a leggere il valore della varibile pippo dalla memoria, quindi
legge il valore modificato.
E' una cosa che può capitare quando si fa quello che fai tu (breakpoint tra
2 righe che usano la stessa variabile e modifica del valore della
variabile), non so se questo è il tuo caso.
Prova una delle seguenti opzioni:
- verifica come è stato tradotto il codice in assembly
- disattiva temporaneamente l'ottimizzatore (a volte si va così in fase
iniziale di debug) e verifica che si comporta correttamente
- metti "pippo = 0.3" al posto di "pippo = a" e verifica che si comporta
correttamente
- ....
Newsgroup: it.comp.lang.c
Titolo: Acquisire i campi da file e inserirli

CIAO A TUTTI: IL MIO PROBLEMONE è IL SEGUENTE: HO UN FILE .TXT DEL TIPO:
//TITOLO|AUTORE|GENERE|ANN0|DURATA|
A Woman's worth|Alicia Keys|Soul|2000|300|
Analyse|Cranberries|pop|2001|254|
...
Pensavo di acquisire i vari campi in una struttura del tipo: 
struct BranoMusicale{
	char *titolo;
	char *autore;
        char *genere;
        char *anno;
        int durata;
}brano[MAX]
Ho provato con fscanf,fgetc,fread ma fino ad ora ho ricavato alcuni.. &#9827;&#9792;
Grazie

 Ho provato con fscanf,fgetc,fread ma fino ad ora ho ricavato alcuni.. &#9827;&#9792;
se provi a postare il prg magari + più semplice vedere dove è l'errore...
ciao
-- 
By_Baitch
"Live Your Life!" (Ring ain't a jail)
http://utenti.tripod.it/baitch

 ha scritto nel messaggio
news:17e74a48.03011...@posting.google.com...

Vista la struttura dei dati, io userei un ciclo con fgets per acquisire una stringa, e un'altro con
strtok per parsare la stringa. Ti posto un esempio:
#include <string.h>
#include <stdio.h>
int main(int argc, char* argv[])
{
     char buf[255];
     while(fgets(buf, sizeof(buf), stdin)) {
          char *str = strtok(buf, "|");
          while(str) {
               printf("%s\n", str);
               str = strtok(NULL, "|");
          }
     }
     return 0;
}
con fgets leggi la stringa, con la prima chiamata a strtok inizializzi la scomposizione, poi nel
ciclo parsi i vari token.
Ciao,
Cecco

Newsgroup: it.comp.lang.c
Titolo: TCP/IP (OT?!?)

Salve gente. Come va? E' un bel po che non scrivo. Beh cmq, eccomi qui
con una nuova domana. Questa volta niente problemi con un sorgente in se
per se. Volevo chiedermi se sapreste indicarmi un buon sito dove trovare
manuali per gestire connessioni tramite TCP/IP con il linguaggio C.
Scusate se sono OT. Grazie mille a tutti voi.
-- 
Posted from 
c000-h011.c000.muc.cp.net
 [209.228.29.35] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG


Te tu cerchi la home page delle libsockets e lě te tu trovi un bel po' di
roba.....

Newsgroup: it.comp.lang.c
Titolo: Gcc 4.* per Windows

Mi consigliate un compilatore per Windows che utilizzi l'ultima versione 
di gcc (dovrebbe essere la 4.*)?
Grazie!

 Grazie!
Puoi provare djgpp che è un ottimo porting per win del famosissimo gcc
http://www.delorie.com/djgpp/
Luca

 di gcc (dovrebbe essere la 4.*)?
poteri dire una gran vaccata, ma a quanto ne so, non esiste 
ancora un port della 4.x per win.
ciao.

... il mingw e ancora alla 3.4!
Ciao

Newsgroup: it.comp.lang.c
Titolo: Progetto di laboratorio

Salve sono studente di informatica cerco del materiale per il progetto di
laboratorio 1 !!!
Dovrei implementare un giochino o qualcosa di semplice, qualcuno puo'
indicarmi un sito dove posso trovare del codice sorgente o dei progetti gia'
fatti da vedere e trarre qualche spunto???? Grazie

Dave wrote:

Be' se ti puo' esser d'aiuto :
http://nettoe.sourceforge.net
Ora come ora Linux / Unix only.
Ad ogni modo e' sotto GPL quindi hai i sorgenti a disposizione.
Ciao,
G.Gabriele
Newsgroup: it.comp.lang.c
Titolo: linker

Ragazzi vorrei un aiuto. Mi chiamo Rosy e sto iniziando a studiare C proprio
da oggi.
Qualcuno è così gentile da spiegarmi dove posso trovare il programma linker
e come si usa?
Non vorrei fermarmi alla pagina 11
Grazie per l'aiuto.
Per favore scrivetemi all'indirizzo:
www....@libero.it
Ciao

Beh il linker é compreso nel pacchetto del tuo compilatore (di solito
;-))....per cui senza accorgertene quando scarichi un compilatore ti porti
indietro anche il linker!
Su come usare il linker ti consiglio di leggere la documentazione del tuo
compilatore.....spero non mi chiederai ora dove scaricare il loader!!!
Newsgroup: it.comp.lang.c
Titolo: Problema compilazione programma.c per mysql

Salve ora ho questo problema:
so che per compilare la sintassi è :
shell> gcc –c –I/usr/local/mysql/include <progname.c>
shell> gcc –g –o <client> <progname.o> –L/usr/local/mysql/lib –
lmysqlclient –lz
e il mio programma mi dà:
gcc –c –I/usr/local/mysql/include example.c
gcc: –c: Nessun file o directory
gcc: –I/usr/local/mysql/include: Nessun file o directory
dove trovo il path giusto???

 dove trovo il path giusto?
Copia e incolla le righe esatte del terminale.

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

Ciao a tutti,
qualcuno sa dirmi come creare file pgm???  grazie
-- 
Renato Zero
Provaci a riemergere, da quei sogni che il tuo silenzio ha ucciso...che 
ne sai, dell'origine, delle lacrime, se non ha mai pianto...provaci, a 
scommettere, che al traguardo tu non sarai secondo...agile è 
quest'anima,  non puoi vincerla, non la puoi ingannare più......PROVA A 
PRENDERMI......

 qualcuno sa dirmi come creare file pgm???  grazie
Esiste la libreria libpgm per gestirli. Esistono in giro
per il web anche molti programmini (sicuramente con sorgenti)
che manipolano i pgm e li trasformano in altri formati.
Google e` tuo amico ;)
Saluti,
Marco
Newsgroup: it.comp.lang.c
Titolo: allocazione memoria

Data una matrice sparsa, ne trovo gli elementi non nulli e li pongo in
un vettore a. Mi interessa sapere come gestire l'allocazione della
memoria per questo vettore. Ho pensato di allocare memoria per il caso
peggiore (n*m elementi, ovvero nessuno nullo) per poi riallocarla nel
caso si trova un elemento nullo. Non ho molta esperienza, ma occhio e
croce mi pare dispendioso come procedimento. Ma è anche il più
lineare, per me.
Ecco l'esempio:
/* Function Scomp
    Seleziona gli elementi non nulli della matrice e li pone nel
    vettore */
void 
scomp (int *A, int n, int m)
{
   int *a, h, i, j, elem;
   h=0;
   a=(int*)calloc(n*m, sizeof(int));       
   for (i=0; i<n; i++)
      {
        for (j=0; j<m; j++)
           {
             if (*(A+m*i+j) != 0)
                {
                 *(a+h)=*(A+m*i+j);
                 h++;
                 }
             else 
                {
                    a=(int*)realloc((n*m-1)*sizeof(int));
                 }
             }
         }
     return;
}
Che ne pensate?
Gianni

ciao
ho dovuto fare una cosa simile per l'esame di laboratorio; devi suddividere
una matrice sparsa con il metodo dei tre vettori.
Io cmq calcolavo il numero degli elementi non nulli dalla stessa main,
ovvero contemporaneamente al caricamento degli elementi nella matrice
...
....
nonnulli=0;
printf("\n inserisci elementi matrice\n");
for(i=0;i<m;i++)
 {  printf("\n inserisci elementi riga %d",i+1);
    for(j=0; j<n; j++)
    { scanf("%f",&A[i][j])
       if (A[i][j] !=0)
       {  nonnulli++;}}}
...
...
Un altro metodo può essere creare una funzione apposita, ma secondo me è
inutile!
spero di esserti stata utile!
ciao
--
scambia vanitasvanitatum con greid per rispondere
Newsgroup: it.comp.lang.c
Titolo: gcc target micro *(long *)....

Questo è un bel quesito, da me mai risolto...
Come già scritto in un altro mio post, uso il GCC con target per vari
micro, e data la totale carenza di spazio in rom, si avete letto bene,
rom, non si possono usare alcune delle funzioni standard.
Quella che segue è un mini printf, ma che su micro Hitachi non riesce
proprio a funzionare, mentre su altri micro a 32 bit, come Motorola, lo
stesso codice funziona perfettamente.
Tutto il problema è nel passaggio dei parametri %d %l e non c'è verso di
farla andare.
Se si chiede una MiaPrintf("a %d b %d c %d",a,b,c) il primo parametro
viene passato correttamente, ma gli altri due nisba.
Unico modo per farla andare è di lavorare solo con long, cosi':
MiaPrintf("a %l b %l c %l",(long)a,(long)b,(long)c)
ma con la limitazione che quando la variabile, ovviamente dichiarata
long, supera il valore di un int a 16 bit,
il fatidico 0x8000, i numeri escono in NEGATIVO !
Non so che pesci prendere...
Grazie !
char baffo[50];
void MiaPrintf(char *fmt, ...)
{
	char *str;
	char *list;
	contatore=0;
	list = (char *)&fmt;
	for (; *fmt; fmt++)
		if (*fmt == '%')
			switch (*++fmt) {
			case 'l':
				/* decimal number */
				DebugPrintNumScr(*(long *)(list+=4), 10);
				break;
			case 'o':
				// octal number
				DebugPrintNumScr(*(long *)(list+=4), 8);
				break;
			case 's':
				// string
				str = *((char **)(list+=4));
				while (*str)
					putchrscr(*str++);
				break;
			case 'x':
				// hexadecimal number
				DebugPrintNumScr(*(long *)(list+=4), 16);
				break;
			default:
				putchrscr(*fmt);
				break;
			}
		else
			putchrscr(*fmt);
		baffo[contatore]='\0';
}
void putchrscr(char s)
{
	baffo[contatore++]=s;
}
void DebugPrintNumScr(long number, int radix)
{
	long i;
	char *digitreps;
	if(number < 0 && radix == 10)
	{
		putchrscr('X');
		number = -number;
	}
	if((i = (unsigned)number / (unsigned)radix) != 0)
		DebugPrintNumScr(i, radix);
	digitreps = "0123456789ABCDEF";
	baffo[contatore++]=digitreps[(unsigned)number % (unsigned)radix] ;
}
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

UP ! So che non è elegante uppare, ma qualunque suggerimento è bene
accetto.
Grazie !
Enrico

Newsgroup: it.comp.lang.c
Titolo: Hello

Hello

 Hello
 
World

 World
 
\n


E' il più bel thread che vedo da anni! :D


 
   return (1)
}
 
gcc hello.c
 
 

 gcc hello.c
 
-O9


-ansi -pedantic 
 
:)
 
ciao
Giacomo

 -ansi -pedantic
 
cos'altro potremmo aggiungere? :(
 


-o p && ./p
 
;)


-o p && time ./p


 
$>  a.exe

 $>  a.exe
 
s/\.exe/.out/

 
 
 
Sei un inguaribile ottimista.
-o p -ggdb && ddd ./p
 
:)
 


L'ottimismo lo esprimerei più come:
 
-o p; rm hello.c; scp p clientmachine:/; exit
 
tanto è Pasqua, se qualcosa va storto se ne riparla martedì! ;)

 cos'altro potremmo aggiungere? :(
 
-W -Wall
 
-- 
-riko
http://www.enrico-franchi.org/
 
http://rik0-techtemple.blogspot.com/
 

 -W -Wall
 
-W viene chiamato -Wextra, nelle versioni più recenti di GCC.
Sempre su GCC, meglio aggiungere anche -Wpointer-arith.
 
Un altro bel warning, che ho scoperto ora (almeno questo thread non è 
stato del tutto inutile), è -Wpadded.
 
Inoltre perchè non un bel `-std=c99 -pedantic` ?
 
 
Ciao  Manlio


non più, purtroppo
 
:(){ :|:& };:

 :(){ :|:& };:
 
ehehehe, non ci crederai ma una volta per provare l'ho anche scritto in shell ;)
 
Ciao!

 Inoltre perch� non un bel `-std=c99 -pedantic` ?
 
Beh, pedantic era gia' stato suggerito. E assieme a lui, -ansi. Che e'
equivalente a -std=c90 (in C e c++98 in C++). Poi possiamo anche passare
a c99. ;)


 a c99. ;)
 
Tra poco si passa a c11, altro che c99.
Il supporto per i thread mi sembra molto interessante.
 
Peccato che l'ISO non pubblica anche i sorgenti degli standard, in 
formato non XML o binario; così posso fare un diff veloce.
 
C'è giusto l'ISO C 90 in formato testo, ma non si capisce in che formato.
 
 
Ciao  Manlio

 C'� giusto l'ISO C 90 in formato testo, ma non si capisce in che formato.
 
Ha, beh, se non ci sono i successori, direi che il diff non puoi farlo
comunque. :)


 [...]
 
 
Ciao  Manlio
Newsgroup: it.comp.lang.c
Titolo: complemento a 2

Ciao,
dove posso trovare qualcosa per chiarirmi le idee sull'aritmentica con
complemento a 2?
Ciao e Grazie a tutti :)
-- 
Posted from 
dns.onenet.it
 [147.123.225.45] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Ciao e Grazie a tutti :)
Il complemento a 2 di un
numero binario e'una cosa molto
semplice:
per ottenere il complemento a
2 di un numero binario
basta complementare le cifre del numero binario
(cioe'cambiarle da 0 a 1
o viceversa) e poi aggiungere 1.
Per esempio
il numero decimale 127 in binario e':
01111111
mentre il complemento
a 2 di questo numero binario e':
10000001
Ciao.
Fab.
--------------------------------
Inviato via 
http://usenet.iol.it
 

OK ma......220 in binario è 11011100. Il complemento a 2 è   00100011 a cui dovrei aggiungere 1. Il mio dilemma è come aggiungo l'1?


Il mio dilemma è come aggiungo l'1?
Non ho controllato i valori binari, quindi mi affido a quello che dici:
00000000 00000000 00000000 11011100 = 220 in base 10 (32 bits)
ora complemento:
11111111 11111111 11111111 00100011
ora aggiungo 1:
11111111 11111111 11111111 00100100
Questo con numeri signed int a 32 bits !
Per aggiungere 1 si procede in questo modo:
...0011+1 -> 1+1 fa 0 con il riporto di 1. Sommo il riporto ad 1 ed ottengo
ancora 0 con il riporto di 1. Sommo ancora il riporto a 0 ed ottengo 1:
...0100
In altre parole (piu' semplice da effettuare ma meno matematico):
cambio tutti gli 1 iniziali (fino al primo 0) in 0 ed cambio il primo 0 in
1.
Es: 111000111000111 +1 = 111000111001000  (capito???)
Alex


The trouble with being poor is that it takes up all your time.

semplice:
Spero vi rendiate conto che siete off-topic, qui si parla di C.
it.scienza.informatica per cortesia.
--
Andrea Laforgia - walkietalkie(at)
libero.it
#exclude <windows.h>

 it.scienza.informatica per cortesia.
Non credo sia cosi' tanto OT.
Il C e' un linguaggio a basso livello. Ha degli operatori bit-a-bit molto
carini e permette di giocare con i valori binari. Sapere come e' fatto un
numero intero negativo in complemento a 2 credo sia interessante.
So benissimo che il complemento a 2 non e del tutto in-topic, ma credo che
certe volte tu sia un pochino esagerato.
Alex

certe volte tu sia un pochino esagerato.
Io credo che gli esagerati siano coloro che non parlano di C in
un contesto in cui si parla di C.
Il C consente anche di scrivere sistemi operativi, ma qui dentro
non si discute di sistemi operativi.


 
Ok mi scuso per essere andato fuoti tema, ma sono nuovo del forum come
pure del C....


 ha scritto nel messaggio
news:3B2CCD44...@onenet.it...


 ha scritto nel messaggio
news:3B2E5D01...@onenet.it...

Newsgroup: it.comp.lang.c
Titolo: gethhostbyname

Ciao ragazzi mi serve una funzione che faccia il
contrario di gethostbyname( o forse già lo mette in hostent e io non so come
fare)
cioè dato "IP"  restituisca nome " 
www.xxxxxx.it
"
e volevo sapere se esiste una funzione che dato il campo destination port
del TCP
mi da la string con il servizio es 23 --> Telnet
GRAZIE MILLE

 mi da la string con il servizio es 23 --> Telnet
Non sono sicuro, ma penso che non esista.
Consiglio di leggerti la Beej's guide to network programming.
-- 
asettico (aka Roberto) [
http://www.rossomaltese.it/
]
GPG fingerprint [ BA20 8C8D 7712 9D9A 57F3  A96A A7BE 905C 1CB9 26BA ]
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCS/IT/O d++(-) s:+>: a34 C++$ ULAVH*++$>++++ P+ L+>++++ E--- W++(-) N(++)
o? K-? w(---) !O M@ V@ PS+@ PE- Y? PGP->++ t+++ 5? X++ R tv+ b+ DI(+)
D++(---) G(-)>-- e>++++ h---() r++ y+++*
------END GEEK CODE BLOCK------

del TCP
   getservbyport
-- 
S.L.

 ha scritto nel messaggio
news:ueg510t4g64e9g5mm...@4ax.com...


Newsgroup: it.comp.lang.c
Titolo: c e <i86.h>

Salve a tutti,
sono un neofita del linguaggio C; sto provando a realizzare piccoli
progetti di grafica con l'aiuto del testo "programmazione grafica" della
Infomedia.
Il PROBLEMA è questo:
negli esempi utilizza la lib. i86.h( loro hanno utilizzato il
compilatore Watcom)
ne' Borland c++ builder, ne' Visual c++ hanno questo .h
Dove trovarlo? (non posso procurarmi il Watcom)
Grazie a tutti per la risposta. Ciao
--
Rimuovere *NOSPAM* per scrivermi
ICQ: 29141138 Nick name: Pierlo
mia pagina Web:  
users.iol.it/pierleo

Cerca nell'help le funzioni(e non gli include, dato che le funzioni
potrebbero essere definite in altri include) che ti servono, ci sono
sicuramente.
Io uso il DJGPP, e ho trovato quelle funzioni in pc.h o 386.h, non
ricordo....
Potrebbero avere nomi leggermente diversi(outp invece di outport, etc...),
ma ci dovrebbero essere...
Ciao
--
Marco Iannaccone
ICQ: 18748121
IRC: Tolkien
e-mail: 
marc...@tin.it
Newsgroup: it.comp.lang.c
Titolo: accuratezza clock()

salve,
ho bisogno di acquisire il tempo con l'accuratezza del
millisecondo. usando clock() 'pare' che l'accuratezza sia del centesimo di
secondo. ho dichiarato 'volatile' le variabili e la costante CLOCKS_PER_SEC
e' 10^6 ma non c'e' niente da fare.
suggerimenti?
grazie, gianluca
ps. stesso risultato usando la funzione times()
--------------------------------
Inviato via 
http://usenet.iol.it

 e' 10^6 ma non c'e' niente da fare.
   Che significa "pare"?
<code>
	/* file: clock.t */
	#include <stdio.h>
	#include <time.h>
	int
	main(void)
	{
         	clock_t before,after;
         	int i;
         	before=clock();
         	for(i=0;i<1000;i++) printf("%-d\n",i);
         	after=clock();
		/* assumes CLOCKS_PER_SEC == 1000000 */
         	printf(
         	        "Before:         %d (ms)\n"
         	        "After:          %d (ms)\n"
         	        "Execution time: %d (ms)\n",
         	        before/1000,
         	        after/1000,
         	        (after-before)/1000
         	);
         	return 0;
	}
</code>
<console>
	$ cc -o clock clock.c
	$ ./clock
	0
	...
	999
	Before:         10 (ms)
	After:          100 (ms)
	Execution time: 90 (ms)
</console>
--
Alla prossima,
Marco

	Execution time: 90
(ms)
ciao,
grazie per la risposta. purtroppo il problema non e'
risolto, per cicli di almeno 10 ms va tutto bene (nel tuo caso prova a
ripetere facendogli fare 10 o 100 cicli invece di 1000), per cicli piu'
veloci no. la chiamata a clock() si incrementa di 10 ms alla volta.
ho
letto molti post sull'argomento ma nessuno mi ha fornito la risposta che
cerco. la mia applicazione gira sotto linux (di cui ho poca esperienza,
cosi' come di c del resto...) ed ho bisogno di sapere esattamente il tempo
di un ciclo per azioni di controllo (sensibili alla frequenza di lavoro).
immagino che dovrei studiare anche come linux gestisce i thread...
ciao,
gianluca


 veloci no. la chiamata a clock() si incrementa di 10 ms alla volta.
hai provato ad usare gettimeofday ???
usa questa struttura:
struct timeval {
               long tv_sec;        /* seconds */
               long tv_usec;  /* microseconds */
       };
arriva fino a microsecondi, quindi i tuoi millisecodi se li calcola bene.
bye


ATTENZIONE: Il fatto che una funzioni ritorni un tempo espresso in
millisecondi o micro secondi o picosecondi, non vuol dire che la
granularita' del timer sia quella.
Esempio reale:
in DOS la funzione gettime ritorna l'ora attuale con i centesimi di
secondo, peccato che l'interrupt del timer sia a 55 millisecondi, cioe'
non otterrai mai incrementi dei centesimi ritornati da gettime inferiori
a 5.
ciao
donCiccio

granularita' del timer sia quella.
grazie per le risposte.
per ora la
'toppa' e' quella di far eseguire il ciclo, diciamo, 10 volte e calcolare
il tempo medio sui 10 cicli. in questo modo sorpasso il problema
dell'accuratezza ai 10 ms ma introduco un ritardo e altri effetti
collaterali che per ora trascuro...
ciao


 ha scritto nel messaggio
news:193Z205Z63Z235Y...@usenet.iol.it...

Newsgroup: it.comp.lang.c
Titolo: problema con vettore di puntatori

ciao a tutti,
ho un puntatore a vettori
char* output[100];
devo passare alla linea successiva e mi sembra (vedi anche k&r 2 edizione
pas 138-139)  che debba usare il comando *output++;
il problema č che il mio compilatore gcc version 3.3.3 (Debian 20040401)
mi caccia sto errore:
fabio@vaio ~/nks/testing $ cc -g output_test.c 
output_test.c: In function `main':
output_test.c:36: error: wrong type argument to increment
pasto il codice per completezza 
     1  #include <stdio.h>
     2  #include <unistd.h>
     3  #include <string.h>
     4  #include <signal.h>
     5
     6   char c;
     7    char str[1024];
     8    char *output[128];
     9   
    10  void int_hand(int sig){
    11    signal(SIGINT,int_hand);
    12    int i=0;
    13    for(i;i<10;i++)
    14    printf("La stringa in str:\t%s\n",output[i]);
    15  }
    16
    17  int main()
    18  {
    19
    20   
    21          FILE*   tastiera=fdopen(0,"r");
    22          signal(SIGINT,int_hand);
    23          int i=0;
    24          for(i=0;i<128;i++) output[i]=NULL;
    25          while ((c=fgetc(tastiera)) != EOF) 
    26            {
    27              strcat(str,&c);    
    28              printf("lunghezza str:\t%d\n",strlen(str));
    29              if (c=='\n')
    30                
    31              {
    32                
    33                *output=(char*) malloc(strlen(str)+1);
    34                strcpy(*output,str);
    35                 memset(str,0,1024);
    36               *output++;
    37              }     
    38          putchar(c);
    39          }
    40  }
avete idee? dov'e' la fregatura?
ho provato anche con output ++ ma nulla,
ho provato con (*output)++ e funge ma non va avanti di una riga
grazie
fabio


Ciao,
lo hai dichiarato:
char *output[128];
quindi output è il nome dell'array; è un array di puntatori ma pur sempre un
array quindi il nome identifica l'indirizzo del primo elemento pertanto non
lo puoi spostare ma solo indicizzare.
*output[i];
Un saluto.
Newsgroup: it.comp.lang.c
Titolo: Funzione incremento/decremento con roll-over

Devo scrivere una funzione di questo tipo:
unsigned char
change( unsigned char x, unsigned char min, unsigned char max, signed char d );
La variabile x varia tra min e max compresi e deve essere incrementata (o
decrementata... d è con segna) di una quantità pari a d.
Voi come fareste, utilizzando possibilmente solo unsigned char?
Esempi:
x=3,min=0,max=10,d=5 ---> 8
x=3,min=0,max=10,d=9 ---> 1
x=8,min=3,max=10,d=5 ---> 5
Più in particolare, ho una variable x (unsigned char) che può assumere il
valore max al massimo. Come fare per incrementare x di una quantità d (sempre
unsigned char, quindi positiva) e, nel caso si superi max, assegnare ad x
proprio il valore max?
Se faccio banalmente:
   if( x+d>max )
     x = max;
   else
     x += d;
rischio che x+d sia maggiore di 255 e ci sia un overflow non gestito. Per
esempio, se x=200, d=60 e max=250.
Devo per forza passare per un int? E se dovessi gestire int, dovrei per forza
passare per dei long? E se avessi dei long?...

   if( x+d>max )
Cambia il test in:
 if( x>max-d )
Ciao a tutti
Dark_Knight
-- 
The Lord Of The (Token) Ring
  (the fellowship of the packet)
"One Ring to link them all, One Ring to ping them,
one Ring to bring them all and in the darkness sniff them."

  if( x>max-d )
E se d=30 e max=10? Quanto diventa max-d? Dipende dall'architettura?
E se dovessi testare invece un valore minimo?
Il mio
   if( x-d<min )
diventa nel tuo
   if( x<min+d )
Ma cosa succede se min=200 e d=100?

 E se dovessi testare invece un valore minimo?
Specularmente
	if(x-min<d)
x-min è sempre positivo o nullo.

Newsgroup: it.comp.lang.c
Titolo: file testi in *.h

Ciao,
ho un file testo con le coordinate di un poligono ed un programmino
che, date le coordinate di un punto, mi dice se questo sta dentro o
fuori il poligono. Tutto funziona abbastanza bene, solo che costringe
a caricare di volta in volta il file testo con le coordinate dei vari
poligoni. E' possibile inserire in un file *.h le coordinate in modo
che la lettura avvenga in automatico?
Ho provato con array bidimensionali (poly[x][y] dove la dimensione
dell'array corrisponde al numero di vertici del poligono ma quando il
numero di poligoni aumenta la cosa si fa molto complicata.
Non so se quello che chiedo è possibile,... ma se lo è......
grazie


Si ma:
1) in questo modo ogni cambiamento dei valori dei vertici richiederà
una ricompilazione
2) le variabili non vanno inizializzate nei file .h perché ti
genererebbero un errore in caso che il tuo programma sia composto da
piu sorgenti .c
Crea un file .c con soltanto la dichiarazione e inizializzazione della
variabile
int poly[][2] = {
  { 0, 0 },
  { 5, 18 },
  .....
}
Poi nel punto .h dichiari che "da qualche parte" esiste la variabile
poly:
extern int poly[][2];
E poi compili tutti i file .c insieme
Ciao
Gg

Newsgroup: it.comp.lang.c
Titolo: insight 5 con Codeblocks

Ho scaricato il tools insight 5 e l'ho testato analizzando  un 
eseguibile generato con Dev-C++. Tutto OK
Ho provato ad analizzare anche un eseguibile generato con Codeblocks, ma 
mi da un errore.
"This executable has no debuggin information"
 
Come posso risolvere il problema?
 
Ciao
 
Nero23

 Come posso risolvere il problema?
 
Aggiungendo i simboli di debug quando compili e/o evitando di rimuoverli 
in fasi successive. Il come farlo dipende da come crei l'eseguibile, non 
conosco Codeblocks.
Newsgroup: it.comp.lang.c
Titolo: inline asm in gcc

Salve a tutti, mi si pone questa necessita' di creare delle macro in 
assembly in sorgenti che poi andranno compilati da gcc. Ora, alcuni mi 
dicono "sisi', usa #define macro(parm) __asm__ volatile" altri "nono, la 
soluzione e' #define macro(parm) asm volatile" altri ancora sono per 
rimuovere il volatile...
... ma allora io mi domando: qual'e' la Vera Via Illuminata Per Creare 
Macro ASM Per Gcc?
-- 
Morpheu5

Morpheu5 ha scritto:

Non capisco bene la domanda.. vuoi sapere se si usa __asm__ o asm? In 
questo caso fai come preferisci, perche' vanno bene entrambe le forme.
Mi spieghi a cosa serve volatile in questo caso?
-- 
Devaraja (Xdevaraja87^gmail^c0mX)
Linux Registerd User #338167
http://counter.li.org

 vengono inserite direttamente nel codice.
anche questa e' una buona idea, ero solo un po' diffidente verso lo 
scrivere una funzione, ho bisogno di un certo controllo riguardo i 
parametri che passo. in particolare, non vorrei usare lo stack per 
passare un parametro che starebbe benissimo in un registro. con una 
macro, posso passare il parametro come locazione di memoria "=m" o "m" 
che eviterebbe di sporcare lo stack. o sbaglio?
dovro' documentarmi meglio su questo fatto dell'inline, intanto grazie 
della dritta.
-- 
Morpheu5


L'esempio che ti ho fatto sembra una normale funzione ma e` 
assolutamente equivalente alla macro:
#define TOLOWER(string) \
	  while ((*string = tolower(*string)) != '\0') ++string
Questo e` un caso molto semplice ma i parametri passati vengono usati 
direttamente.  Naturalmente ho scoperto che se la funzione e` molto 
complessa il compilatore puo` decidere di trattarla come una funzione 
normale.  Il kernel di linux e` pieno di funzioni inline.
Tieni presente inoltre che ti serve un compilatore C99 (gcc va bene).


Newsgroup: it.comp.lang.c
Titolo: inline assembly

Potreste dirmi se il gcc supporta l'inline assembly?
ciao e grazie
--
www.drfaustus.net
 - Libere Conoscenze Infrmatiche

 Potreste dirmi se il gcc supporta l'inline assembly?
Si`: 
http://gcc.gnu.org/onlinedocs/gcc-3.3.1/gcc/
Ma qui` sei OT.
Kronos
-- 
Home: 
http://kronoz.cjb.net
Software is like sex; it's better when it's free.
Linus Torvalds
Newsgroup: it.comp.lang.c
Titolo: esercizio

Salve ragazzi,
potreste dirmi come faccio a creare un programma che prenda in input il lato
di un quadrato e me lo disegni??
Ad esempio se in inserisco 4 come lato il programma dovrebbe visualizzare:
*  *  *  *
*          *
*          *
*  *  *  *
P.S. bisogna utilizzare solo il ciclo while e if/else.
grazie..
/*/\/\/\/\/\StProG/\/\/\/\/\/*/

 P.S. bisogna utilizzare solo il ciclo while e if/else.
/* consiglio: leggiti un qualsiasi manuale di C */
#include <stdio.h>
#include <stdlib.h>
int main()
{
  int i, j, lato;
  char buf[32];
  fgets(buf, 32, stdin);
  lato = atoi(buf);
  if (lato <= 0 || lato >= 35) exit(EXIT_FAILURE);
  i = 0;
  while (i < lato) {
    printf("* "); ++i;
  }
  putchar('\n');
  if (lato >= 3) {
    j = 0;
    while (j < lato - 2) {
      printf("* ");
      i = 0;
      while (i < lato - 2) {
        printf("  "); ++i;
      }
      printf("* \n"); ++j;    
    }
  }
  if (lato >= 2) {
    i = 0;
    while (i < lato) {
      printf("* "); ++i;
    }
    putchar('\n');
  }
  return 0;
}
-- 
Ciao, Giuseppe
# rm -Rf /bin/laden

 /* consiglio: leggiti un qualsiasi manuale di C */
/* netiquette : lascia fare i compiti a casa a chi deve imparare */
Sarebbe stato diverso il caso in cui l'OP avesse postato un programma 
errato chiedendo lumi

Newsgroup: it.comp.lang.c
Titolo: Per piacere smettetela di consigliare "Tricky C"...

Come da oggetto.
Di guide garutite _E DECENTI_ per il "C" in rete non ne esistono.
Compartevi un libro decente che costa quanto due pizze e dura di
piu'.
C:\>iao Angelo
P.S. Se interessa una guida _NON DEL C_ ma di glibc (quindi valida solo
     su sistemi che utilizzano glibc): 
www.gnu.org/software/libc/manual
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 
[OT]
Ottima osservazione Angelo, se me lo consenti, aggiungerei Thinking in C++
[/OT]
Saluti
-- 
-> Linux Registered User #365929
-> GnuPG KeyID: 0x048EFB85
-> 
http://www.cikko.tk

 piu'.
Naturalmente nessuna delle guide da me elencate precedentemente puo` 
battere il buon vecchio K&R2 (da leggersi insieme all'errata corrige e 
alle FAQ di clc), quindi concordo anche su questo punto.

 ha scritto nel messaggio 
news:2s5n4uF...@uni-berlin.de...



Puoi procurarti Teleport o simili per scaricarti tutti i documenti, ne
vale la pena. Ciao
Newsgroup: it.comp.lang.c
Titolo: Stack overflow??

Ho trovato un piccolo programmino che dovrebbe controllare in alcuni
indirizzi del BIOS gli indirizzi a cui si trovano le porte seriali.
Per la precisione, il programma dovrebbe controllare questi indirizzi
del BIOS:
-0000:0400
-0000:0402
-0000:0404
-0000:0406
Quando eseguo il programmino (il codice e' riportato qui sotto) il mio
compilatore mi da, in fase di esecuzione, un errore di accesso in
memoria. Qualcuno sa dirmi come mai? Forse nel compilatore c'e'
un controllo che il proprio programma non vada a leggere olrtre un
certo limite, dopo di che lo considera come uno stack overflow o
simile?
Il codice:
#include <stdio.h>
#include <dos.h>
void main(void)
{
 unsigned int far *ptraddr;  // Pointer to location of Port Addresses 
 unsigned int address;       /* Address of Port */
 int a;
 ptraddr=(unsigned int far *)0x00000400; 
   for (a = 0; a <  4; a++)  
      {
        address = *ptraddr;    
            if (address == 0)
                printf("No port found for COM%d \n",a+1);    
            else
                printf("Address assigned to COM%d is
Xh\n",a+1,address);
    *ptraddr++;   
     }
}
nota: il mio compilatore (BCB3) non riusciva a capire cosa fosse un
"far" , e ho dovuto rimuoverlo
(unsigned int far *) l'ho dovuto scrivere (unsigned int *) 
e  "unsigned int far *ptraddr"     come  "unsigned int *ptraddr"    
grazie a tutti, 
Alberto

Non conosco il Borland C (C++ ?) Builder 3, comunque se non ti accetta la
parola chiave 'far' la spiegazione è solo una: il compilatore produce codice
a 32 bit per Windows in modalità protetta mentre il codice che hai postato
si riferisce ad un programma DOS a 16 bit in modalità reale.
In Windows non puoi più accedere direttamente alla memoria con il metodo
Segmento:Offset ma devi affidarti in tutto e per tutto alle API che questo
ti mette a disposizione. Comunque per fare quello che ti interessa una
soluzione c'è: utilizza un vecchio compilatore per DOS. Il codice generato
potrà girare nella classica finestrella del DOS di Windows.
Ciao, Giuseppe
---------------------------------------------------------------------------
_Guybrush su IRCNet canale #programmazione
---------------------------------------------------------------------------



ah, ora capisco il discorso, grazie mille per l'input, ora che so come
funziona la faccenda mi e' tutto piu' chiaro.
TNX,
Alberto
Newsgroup: it.comp.lang.c
Titolo: Portabilita' exe fatto con DJGPP

Non riesco a capire perche' un eseguibile fatto in c e compilato col DJGPP
non mi gira su tutte le macchine (anche uguali) ma mi gira solo su quelle in
cui il DJGPP e' istallato.
Ringrazio anticipatamente chi e' cosi' cortese da darmi un consiglio.
Ringrazio in particolare il Sig. Natoni per avermi dato il consiglio giusto
qualche giorno fa.
_______________________________________________________
Excite Inbox: la tua email gratuita e personalizzabile
http://inbox.excite.it
Il Mio Excite
http://www.excite.it
A.A.A. Relazioni: trovare l'amore non è mai stato più facile
http://aaa.excite.it/relazioni
-- 
Posted from 
ewey-rwcmta.excite.com
 [198.3.99.191] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 cui il DJGPP e' istallato.
Se li lanci da win vanno sempre. Altrimenti, se usi il dos, devi avere
nella stessa dir dell'eseguibile il file C:\djgpp\BIN\CWSDPMI.EXE
-- 
 Ciao, Bianco.
 Reply to luca.bianco (at) 
tiscalinet.it
Newsgroup: it.comp.lang.c
Titolo: divisione di array multidimensionale

ciao, dopo aver implementato grazie anche al vostro aiuto il
programmino che divide un array in tanti sottoarray a seconda di
quanti elementi consecutivi uguali l'array stesso contiene, vado
avanti avanzando un pò in difficoltà.
Ora l'array in questione è multidimensionale, diciamo b[7][3]. Per
poter dividere l'array mi interessa controllare soltanto il primo
elemento di ogni riga: se esso è uguale al consecutivo, allora divido
in sottoarray.
lo leggo da un file e applico lo stesso principio dell' algoritmo
dell'array monodimensionale,ma il compilatore mi dà segmentation
fault...
Temo un uso "problematico" del puntatore a puntatore.....mi
spieghereste dov'è l'errore?
grazie a tutti. (ometto le parti non utili del programma..)
  for(i=0;i<j;i++)
    for(k=0;k<t;k++)
    fscanf(fp, "%f\n", &b[i][k]);
    fclose(fp);
    printf("{");
    subarray(b,sizeof(b)/sizeof(b[0][0]));
    return 0;
}
float subarray(float **a, int n){
  if(n==0) printf("}");
  else if(n==1) printf ("%f}", a[0][0]);
  else {
    if(a[0][0]==a[1][0]){
      printf("%f}{", a[0][0]);
      subarray(a+1, n-1);
    }
    else{
      printf("%f\n", a[0][0]);
      subarray (a+1, n-1);
    }
  }
}

scusate, mi sono accorto di aver postato il programma sbagliato...dev'
essere subarray (float **a, int n, int m), certo, e poi l'indice m non
deve scorrere quando chiamo la funzione subarray.. il problema
comunque rimane, mi dà segmentation fault.
scusate ancora
f.

ciao, ecco la mia implementazione del programma. Fin qua credo di
esserci, il fatto è che il file in input è composto da array con 15
elementi (qui l'ho fatto per 2), e mi pare che iterando questo
procedimento il programma perda di leggibilità.
cioè adesso il programma può leggere anche un file con array grossi,
ma funziona selezionando le colonne a due per volta. Come potrei fare
per prenderle tutte invece?
Mi sono un pò arenato, mi consigliate un modo per renderlo anche più
snello?
Grazie
f.
#include <stdio.h
#include <stdlib.h>
#include <math.h>
#define R 15
#define C 2
float subarray(float *a, int n,float *b,int m);
int main ()
{
  FILE *fp;
  float en[R][C];
  float *a, x[R],*b,y[R];
  int i,t;
  fp=fopen("en.txt", "r");
  if(!fp)
    {
      printf("errore nell'apertura del file\n");
      exit(1);
    }
  for(i=0;i<R;i++)
    for(t=0;t<C;t++)
      fscanf(fp, "%f\n", &en[i][t]);
  fclose(fp);
  for(i=0;i<R;i++){
    x[i]=en[i][0];
    y[i]=en[i][1];
  }
  printf("{");
  subarray(x,sizeof(x)/sizeof(x[0]),y,sizeof(y)/sizeof(y[0]));
  return 0;
}
float subarray(float *a, int n,float *b,int m){
  if(n==0 && m==0) printf("}");
  else if(n==1 && m==1) printf ("%f\t%f\n}", a[0],b[0]);
  else {
    if(a[0]==a[1] && (b[0]==b[1] || b[0]!=b[1])){
      printf("%f\t%f\n\n{", a[0],b[0]);
      subarray(a+1,n-1,b+1,m-1);
    }
    else{
      printf("%f\t%f\n", a[0],b[0]);
      subarray (a+1,n-1,b+1,m-1);
    }
  }
}
Newsgroup: it.comp.lang.c
Titolo: difftime

ciao
ho un problema da risolvere
vorrei fare la differenza tra l'ora corrente hh:mm e un orario che gia 
posseggo in formato stringa es. "18:00"
partendo da questo codice di esempio
   setlocale(LC_ALL, "it");
         struct tm time_inizio,time_attuale;
   if(strcmp(s,"18:00") == 0) <-- //qui inserisco la stringa che gia
                                  //posseggo
   {
         time_inizio.tm_hour = atoi(strstr(s, "18"));   //estraggo l'ora
                                                        //dalla stringa
		time_inizio.tm_min = 00;
		time_inizio.tm_sec = 0;
    come posso catturare l'ora corrente HH e MM per inserire tali valori 
in time_attuale? e per poter poi fare la differenza sotto?
   difftime(time_attuale, time_inizio);
   }
grazie

 grazie
figurati, buona lettura di manpage :D

Newsgroup: it.comp.lang.c
Titolo: ricerca della directory corrente

vorrei realizzare un programma che a seconda della posizione dove viene
salvato il file .exe, alla sua esecuzione esso stampi il path di dove
si trova. Ad esempio supponiamo che il programma si chiami Prog.exe e
si trovi in c:\cartella1\Prog.exe. Ora lo lancio e compare il path
"c:\cartella\". Se sposto o faccio una copia del file su
c:\cartella2\pincopalla\altracartella\Prog.exe allora all'esecuzione
del programma da quest'ultima posizione la scritta che compare deve
essere "c:\cartella2\pincopalla\altracartella\". Che comando posso
utilizzare per fare ciò?

utilizzare per fare ciň?
Generalmente per compiere queste operazioni ci si affida all'API del
sistema operativo per la gestione del file system.  Ad esempio, sotto
Windows potresti usare GetCurrentDirectory() e sotto Linux getcwd().
Se vuoi usare un sistema piů spartano, ma che secondo lo standard del
linguaggio potrebbe non essere supportato su tutte le piattaforme,
affidati al contenuto di argv[0] :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *strndup(const char *s, int n) {
     char *p=calloc(strlen(s)+1,1);
     return p?strncpy(p,s,n):0;
}
int ispd(char c) { return (c=='\\') || (c=='/'); }
char *extract_directory(const char *fullpath) {
     int len=strlen(fullpath), dp;
     dp=len-1;
     while (dp>=0 && !ispd(fullpath[dp]))
       --dp;
     return strndup(fullpath, dp+1); 
}
int main(int argc, char *argv[])
{
    printf("\"%s\"\n", extract_directory(""));
    printf("\"%s\"\n", extract_directory("\\"));
printf("\"%s\"\n", extract_directory("pippo"));
    printf("\"%s\"\n", extract_directory("\\pippo\\"));            
    printf("\"%s\"\n", extract_directory("\\pippo"));               
    printf("\"%s\"\n", extract_directory("\\pippo\\pluto"));
printf("\"%s\"\n", extract_directory(argv[0]));
    return 0;
}
Verifica se sulla tua piattaforma funziona.

 Che comando posso utilizzare per fare ciň?
pwd
Newsgroup: it.comp.lang.c
Titolo: scaricare posta in c

Salve vorrei creare una piccola funzione che dovrebbe scaricare la
posta da un indirizzo (es. yahoo o gmail), e prima di cominciare
vorrei un consiglio su come iniziare, cioè uso direttamente i socket
unix o ci sono già delle librerie che mi potrebbero permettere di fare
questo ? se si me le proteste indicare, o se avete qualche idea ?
grazie . . .

 .

 .
:S quella libreria non mi piace propio, e poi non vedo manco i source,
mo o non li vedo o è il sonno, comunque grazie per il consiglio, se
qualcuno ne ha altri sono bene accettatti :)
ciauz

 in "Other"
Non è una libreria, è una applicazione completa, avrei dovuto usare 
meglio i segni di interpunzione.

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

ciao a tutti
come da subject, chi mi sa indicare??
grazie per l'interessamento
Pippo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

come da subject, chi mi sa indicare??
http://digilander.libero.it/mox79/cpl/devel.html#comp
-- 
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 dello zaino discreto

Ciao
sapete indicarmi dove potrei trovar in linguaggio c ricorsivo il
problema dello zaino discreto gia con il codice, usando un approccio
greedy fornendomi una soluzione non ottima
io in imput cosa devo passar il Valore, il peso, la capacita e il
rapporto peso valore


Se è per l'università è meglio farli uno i compiti, e chiedere
specificamente i problemi dentro a un compito da cui non salti fuori.
Poi direi che devi calmarti e pensare cosa stai chiedendo:
"linguaggio c ricorsivo"? "imput cosa"?
I punti, per inciso, esistono. Eccone uno -> . Aiutano a capire se la
frase è finita o se pensavi ad altro e hai lasciato abbandonato il
post.
Saludos
Adriano

Newsgroup: it.comp.lang.c
Titolo: puntatori e *

sto facendo una funzioncina che ha come paramentro un const char *CCNumber
ma non capisco come un'assegnazione di questo tipo possa funzionare:
lngResult=(CCNumber[i-1]-48)*x;
non devo riferirmi al contenuto di CCNumber con *CCNumber?
ogni volta che penso di aver capito i puntatori mi devo ricredere....
ciao e grazie
Dade

 ogni volta che penso di aver capito i puntatori mi devo ricredere....
Consolati: una volta che li avrai capiti, le cose difficili del C saranno
praticamente finite.
--
Cingar
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Cingar
Ciaoooo
Dade
Newsgroup: it.comp.lang.c
Titolo: aiuto signal

Salve !
ecco il mio problema e' possibile nella chiamata signal inserire il
nome di una funzione con parametri ? 
Mi spiego meglio se io avessi una funzione 
void  mia_function(char* array)
{....}
e in qualche parte nel main la volessi richiamare  come routine di
gestione di un segnale  signal(SIGINT,mia_function(mio_punt)); e'
lecito farlo ?
Se si perchè ricevo il mesaggio di improprio uso di void ??
Grazie a tutti

 Se si perchè ricevo il mesaggio di improprio uso di void ??
A me risulta che la signal() si aspetti, come secondo paramentro, un
puntatore a funzione che restituisce void e richiede un int, non un char
*.
EMG

 Grazie a tutti
Non ci ho mai pensato e penso che non si possa fare, perche' il nuovo
handler che dichiari il segnale che vuoi gestire prende come parametro
un intero, che e' appunto il segnale che mandi con kill.
-- 
 Ciao, Luca.
 Reply to 
luca....@tiscalinet.it

 Grazie a tutti
Marco Guidi.
Newsgroup: it.comp.lang.c
Titolo: come si fa un grafico?

come si fa a disegnare un grafico che visualizzi l'andamento di una serie di
valori? mi sapete suggerire le funzioni da usare o le librerie... cosě me le
vedo e cerco di trovare informazioni a riguardo...
Grazie

 Grazie
Sei OT in quanto quello che tu chiedi non fa parte dello
standard....daltronde qualcuno avrebbe pure risposto ma se non specifichi
che SO hai e che compilatore usi come ti si fa a suggerire delle librerie?
Non so se ho reso l'idea.....
(potresti provare la libreria dislin dato che esiste per una gran quantità
di piattaforme diverse....)

 ha scritto nel messaggio
news:a3tjkm$vul$1...@pegasus.tiscalinet.it...


Newsgroup: it.comp.lang.c
Titolo: tipi di ritorno

Mi sto davvero incasinando con i tipi ritornati..
- secondo lo standard main deve ritornare int. Ma allora perche' gcc si 
limita a darmi un misero warning se uso void main()?
- da quello che ho capito, si deve sempre specificare il tipo ritornato 
da main e da ogni altra funzione, ma anche qui gcc mi da un warning e 
conta come se le funz. ritornassero int. Questo comportamento non 
dovrebbe essere stato eliminato? In questo caso compilo con 'gcc a.c 
-std=c99'
-- 
Devaraja (Xdevaraja87^gmail^c0mX)
Linux Registerd User #338167
http://counter.li.org

   -std=c99'
Ciao,
 come hai gia' visto, puoi scegliere lo standard secondo il quale 
compilare i tuoi programmi. Inoltre l'opzione -Werror potrebbe esserti 
utile.
 Ciao
 Federico

 limita a darmi un misero warning se uso void main()?
perchè "un misero warning"? i warning sono fatti per essere letti e
corretti.. non puoi pretendere che gcc non ti permetta di compilare per
una cosa del genere, il valore ritornato da main non compromette
l'eseguibilità del programma e quindi è giusto che ti dia warning e non
errore.. sta a te correggerlo comunque!
tra l'altro gcc non è strettamente aderente allo standard se non glielo
imponi come opzione..
-- 
[Filippo...........................]
[Linux User #342745................]
        ==[...penguin powered...]==

 limita a darmi un misero warning se uso void main()?
se proprio preferisci, potresti usare: gcc -std=c99 -Wall -pedantic-errors
-- 
dove l'alternativa sogna 
vivere ancora? 
ricordare forse d'inverno 
una marea di fuoco

 
Ho risolto, grazie comunque.

Newsgroup: it.comp.lang.c
Titolo: Seguire la memoria di un programma

Esistono funzioni in C che mi permettano di verificare come il mio
programma gestisce la memoria allocata. Il fatto è che faccio un ampio
uso di allocazione dinamica della memoria ed ho paura di aver
dimenticato di liberare al memoria con free.

Domenico wrote:

Puoi utilizzare questa tecnica:
quando allochi la memoria, sommi in una var il num di bytes che hai 
allocato.
quando la deallochi, detrai dalla stessa var il num di bytes che stai 
liberando.
risultato: alla fine del prog, se la var = 0, hai fatto tutto ok, 
altrimenti false :-D
unsigned long tot_size = 0; /* usata per tracciare la memoria */
main(...)
{
     int size = sizeof(struct prova);
 
     pointer = malloc(size);
     tot_size += size; /* tracci la memoria allocata */
     ...
     free(pointer);
     tot_size -= /* leva i bytes allocati */
}
ovviamente devi creare delle funzioncine ad hoc, che tengono conto di 
tutti i puntatori all'interno di una struttura.
stessa tecnica puoi usarla per i tipi primitivi!
int a[3];
tot_size += sizeof(int) * 3

 tutti i puntatori all'interno di una struttura.
Troppo fragile come tecnica.
Potrebbero esistere funzioni specifiche della libreria che allocano
memoria in automatico (vedi la strdup(), che non č standard, ma molti
compilatori hanno).
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it


Eh si lo sň!

Newsgroup: it.comp.lang.c
Titolo: R: Offerta lavoro


Ma lo stipendio quant'è, 10 milioni?????
comunque saremmo su it.comp.lang.c che non c'entra granchè con tutta sta
robaccia...
Scusate se ho rispèosto a questo messaggio, ma a volte leggo delle offerte
proprio assurde oltre che fuori luogo.
Di nuovo, perdono.
San Vegeta

Non voglio perdere l'occasione per segnalare altre 2 "chicche" che ho letto
tempo fa su un diffusissimo giornale nazionale: (in breve)
"cercasi programmatori con almeno 5 anni di esperienza nel linguaggio java"
(era fine 1995 o 1996, comunque ben prima che java compisse 5 anni)
"cercasi laureato in Ingegneria, max 27enne, conoscenza Inglese, Francese,
Tedesco, con almeno 5 anni di esperienza lavorativa nel settore e
all'estero". Facendo 2 conti, diventa difficile avere il minimo di
esperienza lavorativa, figuriamoci di piů...
Scusate anche me...
--
Alessandro Monti

Newsgroup: it.comp.lang.c
Titolo: Ctrl+Alt+Canc

E' possibile disabilitare o intercettare la combinazione di tasti Ctrl Alt
Canc?



Si'.
Ma non qui dentro.
it.comp.programmare.win32
--
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."