mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c
Titolo: Realloc e acqua santa...

Perche dicono che la realloc è sconsigliata? Cosa ha di cosi malvagio? A me
non ha mai funzionato bene, ma penso di essere io, anche perche negli ultimi
2 giorni mi sono impuntato e riesco a farla funzionare un po' meglio...
Quale è il problema?
Dome

 ha scritto nel messaggio
news:SWOX6.2938$Rq1....@news.infostrada.it...

sicuramente non della realloc stessa, ma nell'uso che ne facciamo.
in primis, come hanno gia' consigliato i 'grandi del NG' usa un pointer
supplementare per il valore di ritorno, e dopo il test per NULL aggiorni il
pointer principale, perche' se la realloc fallisce i dati originali ci sono
ancora (e vanno deallocati alla fine del programma).
in secundis (ma si dice cosi'?) non usare realloc se non puoi modificare
tutti i pointer che puntano a quell'area, cioe' in caso di liste dinamiche o
piu' banalmente
void *p1, *p2, *p3, *p4, *p;
p1=p2=p3=p4=malloc( 100 );
p=realloc( p1,150 );
if( p!=NULL )  p1=p2=p3=p4 = p; /* vanno cambiati tutti */
else printf( "miiIii e' finita la memooOoriaa!" ),exit( 1 );
ciao
donCiccio


wrote:

Il fatto che tu la utilizzi con profitto non vuol dire che non
sia sconsigliabile e, cosa ancor piu' vera, il fatto che il tuo
programma funzioni, non vuol necessariamente dire che e'
corretto.
La realloc e' sconsigliabile per via degli errori che con essa e'
possibile fare, ovvero utilizzare lo stesso puntatore sia per il
buffer da riallocare, sia per quello riallocato, il che porta a
una sovrascrittura in caso di errore e a un memory leak.
Usare, per esempio :
p = realloc( p, 500 ) ;
E' un grave errore.
Siccome questi errori non sono inevitabili, meglio non usarla, se
non strettamente necessario.
--
Andrea Laforgia - walkietalkie(at)
libero.it
#exclude <windows.h>

else printf( "miiIii e' finita la memooOoriaa!" ),exit( 1 );
Sconsiglio di usare gli statement intervallati dalla virgola.
Meglio usare il compound-statement :
else 
{
   printf( "...." ) ;
   exit( 1 ) ;


 Sconsiglio di usare gli statement intervallati dalla virgola.
perche'?
ciao
donCiccio

perche'?
Dovresti saperlo.
Perche' chiaramente diminuiscono la leggibilita' del codice,
oltre a indurre in pericolosi errori.
#include <stdio.h>
int main()
{
    int TuttoOK = 1 ;
    (TuttoOK) ? printf( "tutto OK\n" ),
                printf( "vado avanti tranquillo\n" ) :
                printf( "Errore\n" ) ,
                printf( "chiamo exit(1)")  ;
    getchar() ;
    return 0;


 oltre a indurre in pericolosi errori.
in effetti....
pero' basterebbe conoscere bene le precedenze degli operatori, la
virgola e' l'ultima dell'elenco (precedenza piu' bassa)
ciao
donCiccio

 E' un grave errore.
beh... ma se poi ci metti
if (p == NULL) exit(1);
non mi pare grosso come errore...
la memoria se la dealloca all'uscita...
tanto se fallisce la realloc la zona che ti serve in piu' non ce l'hai, e andare avanti con il programma mi pare cmq un suicidio...
non credi ?
bye

non credi ?
No, non e' detto che tutti i programmi si blocchino in
queste condizioni.  Si potrebbe comunque continuare la
propria elaborazione (per esempio, cercando di liberare
memoria). 

Newsgroup: it.comp.lang.c
Titolo: rand() e suo periodo

Qualcono sa *esattamente* il periodo del numero pseudo-casuale generato
dalla funzione rand()?
Grazie  :-)

dalla funzione rand()?
Penso - ma non sono PER NULLA sicuro - che l'implementazione in sé di rand
dipenda dal singolo compilatore, con alcune restrizioni (generare sempre la
stessa sequenza di numeri a partire dallo stesso seme, generare fra 0 e
RAND_MAX), e quindi non si possa esaminare il caso generale.
Lanugo

Newsgroup: it.comp.lang.c
Titolo: Il file esiste?

Un saluto a tutti: devo risolvere questo problema. Sto scrivendo un
programma che all'avvio controlla l'esistenza di un determinato file e
si segna un 1 o uno 0 in un flag. Ripete però questa operazione per un
migliaio di file, e la cosa diventa noiosa come tempi.
Io ho per ora implementato il test con la funzione __file_exists, ma
all'avvio passo 2 minuti a guardare la luce dell'hard disk che ronza:
if (__file_exists(nomefile)) flag =1;
else flag = 0;
Ho tentato strade alternative, tipo fopen:
if (fopen(nomefile, "r")) flag = 1;
else flag = 0;
ed ho notato un netto miglioramento (4 secondi anziché 120 per testare
i file all'avvio), ma mi è venuto un dubbio. Così come sono quelle due
righe tutti i file presenti vengono aperti e tali rimangono; giusto?
Allora ho scritto:
fp = fopen(nomefile, "r");
if (fp)
{
   flag = 1;
   fclose(fp);
}
else flag = 0;
e siamo tornati al punto di partenza (150 secondi all'avvio).
Qualcuno ha qualche idea? Li lascio aperti i file e chi se ne frega?
Esiste un comando per chiudere tutti i file aperti insieme? Ci sono
altri modi in ambiente DOS (DJGPP) per controllare in maniera rapida
se un file esiste?
Grazie per l'aiuto e un ciao a tutti. Piero.
N.b.
Se può servire: tutti i file su cui fare il controllo sono nella
stessa directory.

 if((fstat(filename,&buf)==-1)&&(errno=ENOENT))
                                       ^==

 nella stessa directory.
  Altrettanto funzionali, ma non standard, le funzioni del gruppo dir*.
	Alla prossima,
		Marco

stessa directory.
Carica la directory in memoria (findfirst() e findnext()) e poi controlla.
Marco

Newsgroup: it.comp.lang.c
Titolo: Socket e Guida x Win

Come da oggetto cerco una guida o un tutorial che parli dei socket in C,
lavorando in WinXP.
Qualcuno mi sa indicare un link?? Grazie

Giuseppe Marini wrote:

Siamo OT.
Se vuoi lavorare con i socket le api sono sostanzialmente identiche.
Sul sito M$ c'e' un doc che parla della libreria Winsock2.
Per una guida sui socket puoi guardare qui 
http://www.ecst.csuchico.edu/~beej/guide/net/
-- 
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: Differenze

compilatore, debugger, linker, precompilatore.
a grandi linee so cosa sono ma che differenze ci sono tra loro?
e poi: quando devo creare il file .exe in winzozz, chi di questi lo crea?
grazie per le risposte
ciao
"a heart, full up like a landfill
a job that slowly kills you
bruises that won't heal..."

Nella speranza di non dire eresie :)
Il tuo codice sorgente passa innanzitutto per il preprocessore (che 
viene invocato automaticamente dal compilatore) che si
occupa di manipolare il testo grazie a istruzioni particolari chiamate
direttive del preprocessore. #include e #define ne sono un esempio.
Principalmente si tratta di includere file e sostituire simboli
speciali.
Poi il programma compilatore crea il codice oggetto e lo immagazzina
nel tuo hard disk. 
Il linker si occupa di "linkare" (collegare) il codice oggetto con
le funzioni incluse altrove, in altre librerie. Ovvero se includi
stdio.h
e usi la funzione printf il linker collegherà il tuo programma con
stdio.h. 
Quest'ultimo dovrebbe creare il .exe (anche se non mi intendo molto di
Windows :()
Spero di essere stato chiaro e di non aver detto ca**ate.
Ciao :)
Nicholas
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto nel messaggio
news:350a81de8d21b1eae3e...@mygate.mailgate.org...

kiarissimo!
un ultima cosa: dove posso trovare un elenco con descrizione delle direttive
del precompilatore?


del precompilatore?
intendi dire del preprocessore? beh nella documentazione del
compilatore penso
--
Lawrence Oluyede
rhy...@myself.com

 
rhy...@myself.com

ok! peccato che non l'ho mai notata! :P
Allora, ci sono 2 cose da dire.
L'elenco delle direttive del preprocessore le trovi sul K&R (quarda
l'indice analitico ee le vedi tutte elencate nella prima pagina).
Queste sono definite dallo standard, non sono a discrezione del
compilatore.
Esiste anche la direttiva #PRAGMA di cui nessuno ha mai capito
l'utilita' :P
Scherzi a parte, viene usata dal compilatore per dei suoi scopi
particolari (per estendere i comandi del preprocessore). La direttiva
in se e' prevista dallo standard, non l'uso che dipende strettamente
dal compilatore (quindi: leggiti la documentazione dello specifico
compilatore).
-- 
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: Leggere righe di file composte da 'header + dati'

Ciao, ho il seguente problema:
un file č cosě strutturato:
stringa    stringa    stringa    dati
I dati sono 65 interi, ed ogni campo č separato dal caratere di tabulazione
\t. Devo inserire i dati letti da file in una matrice. Chi mi puň suggerire
un metodo furbo per leggerli dopo aver memorizzato l'intera riga in un
buffer per mezzo della fgets? Avevo pensato di utilizzare strtok pe
spostarmi lungo il vettore, ma nessun libro che ho spiega in dettaglio e
chiaramente questa funzione.
Grazie per gli aiuti che mi potrete dare, Maurizio

 Grazie per gli aiuti che mi potrete dare, Maurizio
/* esempio strtok */
#include <stdio.h>
#include <string.h>
int main ()
{
  char str[] ="Programmare in c";
  char * pch;
  printf ("Divido la stringa \"%s\" in tokens:\n",str);
  pch = strtok (str," ");
  while (pch != NULL)
  {
    printf ("%s\n",pch);
    pch = strtok (NULL, " ,.");
  }
  return 0;
}
Output:
Divido la stringa "Programmare in c" in tokens
Programmare
in
c
Ciao Max
+-----------------------------------------------------------+
| Secondo alcuni autorevoli testi di tecnica Aeronautica,   |
| il calabrone non può volare, a causa della forma e del    |
| peso del proprio corpo in rapporto alla superficie alare. |
| Ma il calabrone non lo sa e perciò continua a volare.     |
|					     Igor Sikorsky  |
+-----------------------------------------------------------+

 dettaglio e chiaramente questa funzione.
Ciao,
ti posto la pagina di man in cui è spiegata la strtok. E' in inglese spero
non sia un problema (comunque non sono molte righe):
NAME
       strtok, strtok_r - extract tokens from strings
 
SYNOPSIS
       #include <string.h>
 
       char *strtok(char *s, const char *delim);
 
       char *strtok_r(char *s, const char *delim, char **ptrptr);
 
DESCRIPTION
       A `token' is a nonempty string of characters not occurring
       in the string delim, followed by  \0  or  by  a  character
       occurring in delim.
 
       The  strtok()  function  can be used to parse the string s
       into tokens. The first call to strtok() should have  s  as
       its first argument. Subsequent calls should have the first
       argument set to NULL. Each call returns a pointer  to  the
       next token, or NULL when no more tokens are found.
 
       If  a token ends with a delimiter, this delimiting charac-
       ter is overwritten with a \0 and a  pointer  to  the  next
       character  is  saved  for  the next call to strtok().  The
       delimiter string delim may be different for each call.
 
       The strtok_r() function is a reentrant version of the str-
       tok()  function,  which  instead  of  using its own static
       buffer, requires a pointer to a user allocated char*. This
       pointer,  the  ptrptr  parameter,  must  be the same while
       parsing the same string.

 ha scritto nel messaggio
news:X4akc.119883$hc5.5...@news3.tin.it...



Credo di aver già studiato abbastanza!
Credo che non si dovrebbe giudicare senza sapere!
Credo che avresti potuto risparmiarti questa risposta!
Newsgroup: it.comp.lang.c
Titolo: unsigned int e numeri negativi

Osservate queste righe di codice:
-------------prova.c-------------
#include <stdio.h>
int main() {
         unsigned int n;
         n = -2;
         printf("%i\n", n);
         return 0;
}
---------------eof---------------
il risultato:
[torn@tramp:~]$ gcc -Wall -o prova prova.c
[torn@tramp:~]$ ./prova
-2
Ora io mi chiedo: perche` ho potuto assegnare il valore -2 alla 
variabile n, dichiarata unsigned?
Ciao
p.
-- 
gpg key id: 0x6E2D5847
keyserver: 
pgp.mit.edu

variabile n, dichiarata unsigned?
Ma come ?
Prima gli dici di stamparti il numero in signed int e poi ti chiedi
perche' stampa -2 ?

 variabile n, dichiarata unsigned?
uhm... io penso:
-2 e' sempre un insieme di bit che verra' inserito nella variabile e sara'
poi il tipo della variabile a dare il significato alla suo contenuto.
quindi, se il mi ragionamento e' corretto dovrebbe succedere questo:
u_int n
n = (u_int) -2; (cast implicito)
poi tu stampi un valore con segno
quindi
printf (sign_int)n
ma n era -2 'interpretato' come senza segno e, avendo rimesso il segno,
torna a essere -2.
ciao
-- 
Er Baitch
"Live Your Life!!!" (Ring ain't a jail)
http://baitch.altervista.org/

Newsgroup: it.comp.lang.c
Titolo: Dubbi sui puntatori

Salve a tutti. Credo di non avere compreso a fondo come funzionano i
puntatori... Qualcuno potrebbe illuminarmi ?
Prima domanda: dichiarando l'array
char *xxx[]
cosa faccio esattamente ? :)
Altra domanda: che vantaggio c'e' ad usare una struttura per puntatori,
cioe' ad usare l'operatore -> ?
Ultima domanda: in questo esempio
password=(struct passwd*) malloc(sizeof(struct passwd));
che compito svolge l'istruzione (struct passwd*) ?
Grazie in anticipo :)
-- 
*** Gottardi Matteo ***
*** 
gma...@usa.net
 ***


(struct passwd *) e` un cast (conversione) del tipo puntatore a void 
restituito da malloc() nel tipo puntatore a struttura "passwd".
Ciao

 che compito svolge l'istruzione (struct passwd*) ?
La variabile 'password' immagino sia dichiarata di tipo 'struct passwd *'.
malloc ritorna invece un 'void *' (tipicamente). Senza il cast, il
compilatore segnalerebbe una incongruenza tra i due tipi di puntatore
diversi. E' una questione puramente formale.
Ciao,
- Salsi

che compito svolge l'istruzione (struct passwd*) ?
si chiama cast, quando ad esempio vuoi assegnare un tipo ad un tipo
diverso fai un cast, ed il compilatore sta zitto (non sempre..).
cosi` che malloc restituisce void*, mentre tu vuoi un struct passwd*,
cosi` fai il cast ...
non so se ti ho confuso + di prima ;)
[Ranger, email: 
ran...@queen.it
]
[
www.zuzzurello.com/computer/ranger
]
Newsgroup: it.comp.lang.c
Titolo: y1 come variabile globale

$ cat test.c
#include <stdio.h>
int y1;
int main(void) {
   y1 = 10;
   printf("%d\n", y1);
   return 0;
}
$ gcc test.c -o test
test.c:3: warning: built-in function ï¿½y1ï¿½ declared as non-function

 
 
 
ok... ho capito che ci sono delle funzioni interne al C... ma possibile 
che uno che vuole scrivere un sorgente non possa avere come variabili 
globali cose come x1, x2, x3, x4, y1, y2, y3, y4... imho, non potevano 
chiamarle in altro modo? magari inziando con un underscore?
 
mah!!!
probabilmente non c'e' soluzione e certe variabili non si possono 
mettere globali
ringrazio lostesso per info
ciao


Sì, y1 con y0, yn, j0, j1, jn sono abbastanza comuni, servono per il
calcolo delle funzioni di Bessel (
http://en.wikipedia.org/wiki/
 
Bessel_function), e sono solitamente definite in math.h, anche se non
sono ANSI-C (se infatti compili con lo switch -ansi non avrai errori).
In effetti anche IMO non è un gran che come nome per una funzione
built-in, ma c'è da dire che anche y1 non è un gran che come nome di
una variabile globale :-)
Ciao!

 una variabile globale :-)
 
hahaha... vero... e' che scrivo una cosa piccolina e mi veniva comodo
 
grazie 1000
ciao

 chiamarle in altro modo? magari inziando con un underscore?
 
Concordo.. per una lista completa guarda qui:
http://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html
 
 
-- 
Vincenzo Mercuri | 
www.backbox.org
Newsgroup: it.comp.lang.c
Titolo: void main(void)

Perchè non funziona? Sbaglio a compilarlo?
-----------
#include <stdio.h>
void main(void);
void main(void)
{
   printf("Non funziona...\n");
}
-----------
$gcc boh.c -o boh
boh.c: In function 'main':
boh.c:6: warning: return type of 'main' is not 'int'
$

 boh.c:6: warning: return type of 'main' is not 'int'
#include <stdio.h>
int main()
{
    printf("\nOra funziona...\n");
    return 0; // o exit(0) ma includi stdlib.h
}
Regards,
--
         ..::SNHYPER::..
      "Security developer"
Linux registered user  #249109 | machine #133922
site=> 
http://snhyper.owns.it

Non capisco, allora perchè sul tricky C c'è scritta quella riga di codice? 
Come cavolo ha potuto fare uno sbaglio del genere?

Non capisco, allora perchè sul tricky C c'è scritta quella riga di codice? 
Perché è vecchio.
-- 
Marco Barisione (ICQ 84277092)

 Perché è vecchio.
Già, del '98. Ok, thanx!



cmq è solo un warning, l'eseguibile è stato generato lo stesso, e puoi
avviarlo lo stesso (quindi funzia).
Ciao
Matic

Già, del '98. Ok, thanx!
Nota una cosa: lo standard C attuale e' il C99, lo standard precedente
era il C89... 
Il Tricky non e' aggiornato allo standard precedente, non solo
all'ultimo (a cui c'e' poco di aggiornato ad essere sinceri) ed era
gia' datata quando io ho iniziato a interessarmi di C (circa 4 anni
fa').
Il Tricky C e' una raccolta di appunti, prevalentemente rivolta al
mondo DOS + Turbo C... e il Turbo C non era esattamente il compilatore
C piu' aderente allo standard.
Come e' stato ripetuto piu' volte e' una guida discreta, che
senz'altro vale all'autore una nota di merito per l'impegno, ma
lontana dall'essere affidabile. Purtroppo in moltissimi posti viene
spacciata come ottima guida.
-- 
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."

spacciata come ottima guida.
Già è un peccato...io l'ho trovata interessante solo per qualche tip
di programmazione a basso livello
--
Rhymes (
rhy...@myself.com
)
http://www26.brinkster.com/rhymes
" ride or die "

avviarlo lo stesso (quindi funzia).
Già ma dovresti spiegargli che la "situazione" non è standard :)


 Come cavolo ha potuto fare uno sbaglio del genere?
E' semplice, perche' "Tricky C" e' un pessimo testo.
Personalmente, l'ho ripetuto piu' volte qui dentro, nel tempo.
Newsgroup: it.comp.lang.c
Titolo: [Dev-C] più file in un progetto

ciao a tutti
ho due file in un progetto:
file 1: com.c
void funzione();
void funzione()
{
// codice
}
file 2: prog.c
#include "com.c"
int main()
{
funzione();
}
allora il linker mi da errore
in particolare mi dice multiple declaration e first declared in prog.c
dove sbaglio?
grazie
ciao
kk




gcc sta compilando com.c e prog.c e trova i simboli di funzione() in
entrambi i .o, di conseguenza il linker non sa che pesci pigliare..
riscrivilo cosě:
com.c
void funzione(void){/**/}
com.h
void funzione(void);
prog.c:
#include "com.h"
int main(void){ funzione(); /**/ }
sbirish

 ha scritto nel messaggio
news:qf9ofvsg8cvh0qsar...@4ax.com...

ora provo...
ma in com.h non devo includere com.c?
grazie della risp
ciao
kk

 ha scritto nel messaggio
news:bdhb0n$h2k$1...@lacerta.tiscalinet.it...

non funziona... cioč una volta ha funzionato poi incredibilmente lo ho
ricompilato e mi da una trentina di errori. questa volta perň gli errori non
sono del linker ma del compilatore e sono dovuti ad una libreria (allegro)
che ora pare non includermi.
dove la devo includere in prog.c com.h o com.c?
ciao
kk

kk
sbirish

 no ^^ il contrario.. in com.c include com.h, sorry.
infatti ho risolto facendo cosě!
perň ho una domanda: includendo com.h in prog.c come fa com.h a sapere che
il codice della funzione č in com.c?
grazie dell'aiuto
ciao
kk

il codice della funzione č in com.c?
non lo sa

Newsgroup: it.comp.lang.c
Titolo: char in win32

Ciao a tutti, sto realizzando una piccola applicazione in win32 in C (spero
di non essere OT).
Il mio problema è questo: utilizzo un array di char per immagazzinare una
stringa, dopo la trasferisco in una casella di testo (con WM_SETTEXT),
funziona tutto, ma non mi codifica i new line (\n).Mi spiego meglio:
mettiamo che io passi attraverso il messaggio WM_SETTEXT la stringa
"Ciao!\nCome va?\n", essa viene visualizzata cosi:
Ciao![quadratino]Come va?[quadratino]
Gli altri escape funzionano (\t per esempio), ma questo no! Come mai? Cosa
posso fare? Pensavo fosse dovuto al fatto che le stringhe di win32 usano lo
standard unicode, ma come faccio a utilizzarlo se per la mia stringa uso
scanf?
Ciao e grazie

Ciao![quadratino]Come va?[quadratino]
Devi usare "Ciao!\r\nCome va?\r\n". Nota che non sempre e' ammesso
usare testo multilinea oppure che per farlo bisogna anche impostare
altre proprieta' del control.
HTH
Andrea
--
Andrea Griffini, Programmer
http://www.netservers.com/~agriff

Grazie mille! Cosi sembra funzionare! Ma perche per gli altri controlli (gli
static ad esempio) basta usare \n?
Grazie, Dome.
Newsgroup: it.comp.lang.c
Titolo: HELP: Random number generator??

    }
Ok, this work, but it is only a little better than
(rand()%(imax-imin+1))+imin (wich is faster).
Like told in my answer the best distribution is gotten doing so:
int CASUrand(const int n)
{
 const int S=(RAND_MAX+1)/n,X=S*n;
 int x; if(X) { do x=rand(); while(x>=X); } else x=rand();
 return x/S;
}
int rand_between(int imin, int imax)
{
    return CASUrand(imax-imin+1)+imin;
}
Cristiano

, "Cristiano"


Newsgroup: it.comp.lang.c
Titolo: Numeri pari/dispari+Interfaccia dos

Ciao a tutto il newsgroup.
Sto sviluppando un'applicazione per il calcolo dei numeri del lotto
(sotto windows). Pur sapendo che esiste già qualcosa in commercio di
migliore "qualità", vorrei applicare delle regole ai numeri generati
per evitare di produrre sequenze errate. Un esempio è il numero di
numeri pari e dispari in una sequenza. Il mio problema è: come faccio
a sapere se un numero è pari o dispari? Avevo pensato ad una divisione
per due e al controllo del risultato (se con la virgola o meno) ma non
so come implementarlo. Avete un'idea?
Il secondo problema è meno importante: sempre per la stessa
applicazione vorrei creare un'interfaccia per l'inserimento dei valori
(per le regole sopra citate). Pensavo a qualcosa come le ncurses per
*nix. Esiste qualcosa di simile per windows?
Grazie per l'aiuto.

 Grazie per l'aiuto.
mmmhhh .. non saprei.


ncurses per win :-)
Ciao
Giuseppe

    printf("Pari");
Bastava un & 1.
(Matteo)Occhio cmq che per fare queste cose devi avere variabili INTERE!
(non che ci siano molti numeri decimali in una  schedina del lotto :-) )
--- bye

 ha scritto nel messaggio
news:kRg1c.6873$36.2...@news4.tin.it...

Deformazione professionale a bensare in esadecimale :-)))
Giuseppe

 ha scritto nel messaggio
news:kRg1c.6873$36.2...@news4.tin.it...

Pensandoci bene su questa affermazione: Come si applica la defininizione di
pari/dispari sui numeri decimali ?
Si guarda sempre la cifra piu' a destra? Se si, la regola del bit meno
significativo non vale anche in notazione double ?
Ciao
Giuseppe
Newsgroup: it.comp.lang.c
Titolo: puntatore a un array di array

Salve,
mi serve un tipo di dati di questo tipo:
list[][n]
Cioè mi serve un vettore indefinito di vettori di lunghezza n
In visual C++ 5.0 ciò non è permesso e kuindi
ho provato kon
(*list)[n]
Ok. Il problema è ke riesko a skrivere solo il primo di kuesti.........
Grazie!!!
Tommaso Caldarola
OMAR S.p.A.
Tel.: 
+390806354123
e-mail: 
cald...@omarnet.it
Web:  
http://www.angelfire.com/sk/tommaso

(*list)[n]
Io ho provato come segue:
#include <stdlib.h>
#include <stdio.h>
#define SIZE     50
typedef (* list)[SIZE];
int main(void){
 list MyList[2];
 int i;
 int  Array0[SIZE];
 int  Array1[SIZE];
 MyList[0]=&Array0;
 MyList[1]=&Array1;
 for (i=0;i<SIZE;i++){
  Array0[i]=i;
  Array1[i]=(i+SIZE);
 };
 printf("%08X %08X\r\n",MyList[0],MyList[1]);
 printf("%08X %08X\r\n",MyList[0][2],MyList[1][2]);
 printf("%08X %08X\r\n",MyList[0][3],MyList[1][3]);
 printf("%08X %08X\r\n",(*MyList[0])[2],(*MyList[1])[2]);
 printf("%08X %08X\r\n",(*MyList[0])[3],(*MyList[1])[3]);
 return 1;
}
Che compila senza warning, ma ovviamente
funziona come ci si aspetta, cioe' stampando 2, 52 e 3, 53 solo
nelle ultime due printf.
Nella seconda e terza printf stampa indirizzi di memoria dello stack
a salti di 200 bytes (50 * sizeof(int)).
Consiglio di trovare una soluzione meno macchinosa.

Ok. Il problema è ke riesko a skrivere solo il primo di kuesti.........
Lo hai allocato, lo spazio di memoria per questo vettore
di vettori?  Non ce lo chiarisci.  In C++ Standard (e va
benissimo anche in VC++, 4.2 e successivi), il modo
normale e` (dopo #include <vector> e using std::vector):
    vector<vetN> list;
(ma se ti interessa DAVVERO che sia una lista, e non un
vettore!, dovrai allora #include <list>, using std::list, e:
    list<vetN>    lalista;
ovviamente!).
Questo fa di "list" un vettore sinora vuoto, ma puoi:
    -- cambiarne la dimensione, ad esempio
        list.resize(45);    // ora comprende 45 vetN
            // (costruiti con il ctor di default di vetN)
    -- aggiungere gli elementi in coda uno a uno
        vetN pippo;
        // metti quel che vuoi in pippo, poi
        list.push_back(pippo);    // copiato col copy ctor
o anche, direttamente, list.push_back(vetN()),
usando il ctor di default, poi lavori direttamente
sull'ultimo elemento della lista come ad es.
        list.back[7] = 15.6;
ecc ecc.
Puoi, naturalmente, appoggiarti anche direttamente
su costrutti di bassissimo livello come gli array, il
new di array, eccetera (non c'e`, di solito, nessuna
ragione per farlo -- la libreria standard del C++ fa
benissimo lei stessa questo lavoro per conto nostro).
Alex


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

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

Sapete dirmi dove trovare i sorgenti dei vincitori di robocup ?
--------------------------------
Inviato via 
http://usenet.libero.it

 Sapete dirmi dove trovare i sorgenti dei vincitori di robocup ?
hai provato a vedere su 
www.robocup.org
 nella sezione simulata?
Newsgroup: it.comp.lang.c
Titolo: passaggio argomenti da CGI

come posso passare argomenti ad un programma chiamato attraverso un CGI? mi
devo per forza prendere tutta la stringa con ?parametro=valore... per poi
estrarre gli argomenti utili o c'è un modo migliore?
Grazie

estrarre gli argomenti utili o c'è un modo migliore?
Il CGI setta delle variabili d'ambiente. Per sapere quali e come cerca
su google: Corso+CGI. Oppure c'e' il libro Webmaster in a Nutshell da
consultare.
-- 
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."

...


 con scanf ma niente da fare...
Nella stessa maniera in cui leggi un normale file di testo, con l'unica
differenza che stdin non deve essere aperto:
    ch = fgetc(stdin);
Tieni presente che la variabile d'ambiente "CONTENT_LENGTH" riporta la
lunghezza (in caratteri) dei parametri passati, per cui la routine di
lettura potrebbe essere grosso modo cosě:
    char *ambiente = getenv("CONTENT_LENGTH");
    if (!ambiente)
        return 1;        // nessun parametro
    len = atoi(ambiente);
    for (i = 0; len && (!feof(stdin)); i++) {
        parametro = leggi_da_stdin();            // leggi fino a '&' o alla
fine del file
        // a questo punto hai in parametro la stringa:
        //     "nome=valore"
        decrementa len dei caratteri letti;
        converti i caratteri '+' in spazio;
        unescape();                // cambia le sequenze %xx in caratteri
        leggi il nome del parametro e il suo valore();
    }
Maurizio.

Newsgroup: it.comp.lang.c
Titolo: [REQ] librerie numeriche per C

Sapete dove posso trovare librerie numeriche in C per trattare 
matrici di medie dimensione con triangolazioni, Choleski, 
se possibile SVD e principal component analisys?
Grazie mille
Matteo Della Torre


Numerical Recipes   
www.nr.com
o 
netlib 
http://ftp.unina.it:21006/

...



wrote:

Questo perche', pur chiedendo $$$ per il codice, non hanno protetto il
file PDF... ^____^
Ho un amico che ha speso 240KLire, a suo tempo, per i NR in Fortran e
C, ed ancora si mangia le mani! ^________^
Ciao
		A.
Newsgroup: it.comp.lang.c
Titolo: ANCORA SU COME OPERARE SU SINGOLI BIT...

Ho già postato poco tempo fa un messaggio chiedendo se si può modificare una
parola binaria assegnandole un valore da me definito. Qualcuno mi ha già
risposto che in C non è possibile... Questo pregiudicherebbe del tutto il
programma che avevo intenzione di fare. Ora la domanda è: usando ad esempio
gli operatori di bitwise, non c'è un modo almeno per assegnare il valore che
voglio io ad un dato bit della parola di 8 bit?
GRAZIE anche a chi mi aveva risposto in precedenza...
ciao a tutti


I'm not prejudiced, I hate everyone equally.

Certo!!!
<CODICE>
# include <stdio.h>
# include <limits.h>
# define SETBIT(a,b) (a|=(1<<(b%(CHAR_BIT))))
# define CLEARBIT(a,b) (a&=(~(1<<(b%(CHAR_BIT)))))
int main()
{
  unsigned char c0=0, c1=3, c2=0, c3=3;
 
  printf("%2x %2x %2x %2x\n",SETBIT(c0,8),
                             CLEARBIT(c1,8),
                             SETBIT(c2,9),
                             CLEARBIT(c3,9)); 
  return 0;
}
</CODICE>
Ciao
Roberto.


Scusa. Ti devo una spiegazione.
Le due macro settano (o resettano) bits di indice da 0 a 7.
se metti 8 e 9 come argomenti, e' equivalente
a 0 e 1 perche', come puoi vedere dalla definizione,
se ne calcola il modulo per CHAR_BIT (che normalmente
e' 8)
Ciao.
Roberto.


 ha scritto nel messaggio
news:9p83jk$nc7$1...@lacerta.tiscalinet.it...

come ti hanno gia' detto gli operatori & e | e ^ sono la via migliore,
eventualmente fai delle funzioni tipo
void setbit ( int *word,int bit )
{
  *word |= (1<<bit);
}
void resbit ( int *word,int bit )
{
  *word &= ~(1<<bit);
}
oppure, ma e' peggio, prova ad usare le bit field, cioe' strutture di
bit, che normalmente occupano lo spazio di un tipo int (come minimo,
leggi la documentazione del tuo compilatore).
typedef struct
{
  unsigned bit0:1;
  unsigned bit1:1;
  unsigned bit2:1;
  unsigned bit3:1;
  unsigned bit4:1;
  unsigned bit5:1;
  unsigned bit6:1;
  unsigned bit7:1;
} byte;
la dichiari cosi':
byte x;
e la usi pomi':
x.bit0 = 1;
ciao
donCiccio

Le due macro settano (o resettano) bits di indice da 0 a 7.
Sarebbe bene non utilizzare per niente le macro e ricorrere
alle funzioni.  Ricordiamoci, poi, che nelle macro si devono
mettere, per sicurezza, delle parentesi attorno ai
parametri.
-- 
Andrea Laforgia - walkietalkie(at)
libero.it
Newsgroup: it.comp.lang.c
Titolo: Thinking in C

Ciao ragazzi, qualcuno di voi ha il file zippato della versione html di
thinking in C di Bruce Eckel?
Purtroppo non riesco a trovarlo on line.
Ho bisogno di un libro che mi faccia capire bene come funzionano puntatori,
stringhe, array di stringhe et similia... penso di avere le idee un po'
confuse.
Grazie,
Emanuele
PS: se avete qualche e-book da consigliarmi (ovviamente free) sul C, ve ne
sarei molto grato.

 Emanuele
Ciao,
-- 
oOO()             |Nicholas Wieland|
/ _/              |nicholas_wieland|
|/ [ Step on the ]|    @
yahoo.it
   |
\_)[  right foot ]|________________|

thinking in C di Bruce Eckel?
Lo trovi sul site dell'autore :
http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html
ciao

[...]
Lo trovi sul site dell'autore :
http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html
.. ma questo libro non tratta il C++??
.. quanti mega sono??
Ciao

.. quanti mega sono??
Poca roba, circa 1,5 MB
ciao

 sicuro che l'abbia scritto
Si, č incluso nella versione cartacea.
Ciao

Newsgroup: it.comp.lang.c
Titolo: Porting di GCC per Windows NT

distribuzione GNU del GCC?
Non so cosa siano gli script di configurazione, ma la versione djgpp
(porting per dos) non gira sotto Winnt ?

 la versione djgpp (porting per dos) non gira sotto Winnt ?
  Per "girare", gira. Il fatto e` che le librerie del DJGPP non sono
molto compatibili con la tecnologia HAL di NT: se si vogliono sviluppare
applicazioni *per* NT e` meglio utilizzare CygWin.
 
http://www.cygnus.org
	Alla prossima,
		Marco

Newsgroup: it.comp.lang.c
Titolo: leggere file multicolonna

Ciao a tutti!
Sono alle prese con l'importare delle matrici da file, sul mio libro (H. 
Schildt C-corso di programmazione) non ho trovato riferimenti utili...
Per adesso ho risolto in un modo un po' rocambolesco e decisamente poco 
pratico, facendo uso della fseek():
Si suppone che la matrice sia N*M
     in=fopen(argv[1],"r");
     int pos=8; //numero di char da shiftare, considero numeri solo 
   // positivi del tipo %.5f separati da uno spazio bianco.
 
 
	int i,j,k,K;
	i=0;
	j=0;
	k=0;
         K=N*M;
	for(k=0;k<K;k++)
	{
                 // questo gestisce il cambio di riga
		if(mod(k,M)==0 && k!=0)
		{
			i++;
			j=0;
		}
 
	        fseek(in,k*pos*sizeof(char),SEEK_SET);
		fscanf(in,"%f",&image[i][j]);
		j++;
	}
La cosa funziona, ma devo dire che è molto scomoda...e se per caso c'è 
un numero negativo...da li' in poi va tutto in vacca...a meno di non 
fare un controllo sul primo carattere.
Possibile che non ci sia un modo più semplice? O meglio...c'è di 
sicuro...ma io non l'ho trovato...
Grazie per l'ajuto!

 Schildt C-corso di programmazione) non ho trovato riferimenti utili...
a me sembra che tu ti stia martellando i malleoli da solo.
la fscanf va a capo da sola e sempre da sola
e' capace di saltare un numero variabile di spazi.
for (i=0; i<aaa; i++)
    for (j=0; j<bbb; j++)
      fscanf(c,"%lf",&(image[i][j]));
se per motivi tuoi molto particolari la matrice image fosse
non di simpatici e utili double ma di bastardi e infidi
float dovresti naturalmente cambiare il "%lf" in "%f".
ciao
g

Ma porcatroja...
lo dicevo io che c'era una modo semplice...ma sul libro mica è scritta 
questa cosa...quello che continuo a non capire...è come si fa a dirgli 
di saltare un numero arbitrario di colonne...o di righe...
mica sarà...(k per le colonne m per l per le righe)
for (i=0; i<aaa; i+l)
     for (j=0; j<bbb; j+k)
       fscanf(c,"%lf",&(image[i][j]));
Purtroppo per me uso il C come una calcolatrice...nel senso che quando 
non posso fare analiticamente faccio numericamente...e questi sono i 
risultati...grazie tante!
CIAOOOOOOO
nano bagonghi ha avuto l'ardire di scrivere:


Non solo la sintassi è sbagliata...ma mi sembra di capire che la 
fscanf() legge i numeri in sequenza...quindi se di una matrice voglio 
solo la k-esima colonna...devo saltare i primi k-1 e gli altri N-k-1 
numeri...
aaa ha avuto l'ardire di scrivere:



Ciao
-- 
Cybertoldo
Per rispondermi via email, sostituisci moc.liamg con 
gmail.com
Newsgroup: it.comp.lang.c
Titolo: ASSUMIAMO NUOVE RISORSE (richiesta urgente)

Ciao a tutti,
mi chiamo Antonio D'Addio e sono consulente presso la CCS Tecnologies e Pool 
Consulting di Torino, C.so Unione Sovietica 115 (http:\\
www.ccstech.it
, Tel. 
011-3187070).
Stiamo cercando possibili candidati da assumere, full-time e a tempo 
indeterminato, da impiegare come sistemisti in ambito unix-linux e/o 
sviluppo in C, C++, eventualmente ADA.
Si richiede personale milite assolto, laurea o diploma e conoscenze medie 
degli argomenti citati. SEDE DI LAVORO: TORINO e dintorni.
E' gradita la disponibilità a muoversi eventualmente all'estero 
(Inghilterra, Germania) ed una buona conoscenza della lingua inglese.
La richiesta è urgente, invito chi interessato a contattare direttamente la 
Società (telefonicamente o via mail) nella persona dell'ingegner Saverio 
Merlo oppure il sottoscritto all'indirizzo E-mail 
antonio...@ccstech.it
.
Ciao e in bocca al lupo!
A. D'Addio
______________________________________________________
Get Your Private, Free Email at 
http://www.hotmail.com
--
Posted from [213.254.0.4] by way of 
f209.law3.hotmail.com
 [209.185.241.209] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

]
Newsgroup: it.comp.lang.c
Titolo: Ping

Salve,
vorrei sapere come posso replicare il programma ping con il TCP...
Cioč esattamente il ping cosa fa (e soprattutto come lo fa?) e come lo emulo 
con il TCP?
Grazie 

 Grazie
Prego
Ciao
M`

Newsgroup: it.comp.lang.c
Titolo: Uso sscanf

Forse non ho capito bene come funziona... io devo isolare un numero che è 
in una stringa recchiuso tra (' e '), fregandomene del resto:
    	char s1[1024];
    	char s2[1024];
    	int i;
    	sscanf(c_str, "%s(\'%d\')%s", &s1, &i, &s2);
il risultato è una porcheria. Cosa sbaglio? Forse chiedo troppo alla 
funzione e mi devo fare l'estrazione a mano?

 funzione e mi devo fare l'estrazione a mano?
_______________________________________________________
il nome di un array coincide con l'indirizzo del suo primo elemento .. non
serve quindi &.
se vuoi isolare il carattere di posizione i devi mettere fra gli apici
memorizzati nel seguente programma in a e b,  l' &stringa[i-1], come
argomento di tipo char della sscanf.
#include <stdio.h>
#include<stdlib.h>
int main ()
{
int i=100;
char a='\'';
char b='\'';
char *stringa="hai_scritto_le_seguenti_cose_negli_array s1 ed s2:";
char s1[81]=" sscanf legge non legge dallo standard di input";
char s2[81]="ma dall'array puntato da stringa";
char car;
sscanf("%s%s%c%d%c%s",stringa,s1,&a,&i,&b,s2);
printf("%s%s%c%d%c%s",stringa,s1,a,i,b,s2);
scanf("\n%c", &car);
 return (0);
 }
--
Iscriviti al gruppo yahoo Linguaggio_C  con chat vocale per i soli iscritti
http://it.groups.yahoo.com/group/Linguaggio_C
Newsgroup: it.comp.lang.c
Titolo: i files, questi sconosciuti

sconosciuti almeno per me, che sono un ignorante avvicinatosi da poco al 
mondo della programmazione.
Sto studiando il C sul Deitel&Deitel cercando di approfondire qua e la 
sulla famosa "Bibbia del C", purtroppo mi sono impantanato 
sull'elaborazione dei file.
Il D&D dedica interamente l'11° capitolo all'elaborazione dei file 
mostrando sia quelli ad accesso sequenziale che casuale, tuttavia mi 
sembra che l'approccio sia nettamente più superficiale rispetto ai 
primissimi capitoli (sicuramente perchè si tende a dare per scontate 
molte cose).
Il costrutto
if ((cfPtr = fopen("clients.dat", "w")) == NULL)
printf("File could not be opened\n");
else { ... ... ... }
viene presentato come l'unico modo per creare un file, poi spiega cosa 
succede se al posto della w si mette r/a/r+/w+/a+, passando però agli 
esempi immediatamente successivi alla funzione fopen non viene più 
assegnato il w, bensì r. Ma se il file non viene creato non esiste...
senza contare che il costrutto feof:
while (!feof(stdin)) {
   fprintf(cfPtr, %d %s %.2f\n", account, name, balance);
  printf("? ");
  scanf("%d%s%f", &account, name, &balance); }
per me non ha alcun senso...il libro dice che serve per determinare se 
sia stato impostato l'indicatore di EOF per il file al quale punta 
stdin, ma all'inizio del file non è stato scritto #include <stdin.h>
Questi sono alcuni dei miei numerosi dubbi, spero di ricevere qualche 
risposta e spero soprattutto di essere stato chiaro ^^;

 stdin, ma all'inizio del file non è stato scritto #include <stdin.h>
Semmai è "stdio.h", stdin è lo stream di input predefinito.
Se il programma non viene reindirizzato su un device di input, il default
è la tastiera che "pompa" caratteri sino a che non viene premuta la
combinazione di fine del file (EOF, appunto).  Questa combinazione varia
da sistema a sistema, sotto WIndows è CTRL+Z, sotto UNIX/Linux è CTRL+D,
ecc...
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 ecc...
mh...capito.
Ringrazio te e Giovanni per le risposte :D

 interdipendenti?
No, solitamente si suppone di avere un file fatto in un certo modo e
viene illustrato come leggere i dati in esso contenuti.
Luca
-- 
Home: 
http://kronoz.cjb.net
"In linea di principio sarei indifferente al natale, se solo il natale
 ricambiasse la cortesia e mi lasciasse in pace." -- Marco d'Itri

 Potrebbe essere ora che ci penso...
Penso proprio di sě.

Newsgroup: it.comp.lang.c
Titolo: Creare un file (.bmp)

Salve,
dovrei scrivere un programmino C++ (o C) che scriva in un file il
contenuto della Clipboard. In sostanza dovrei creare un .exe che viene
lanciato da un'altra applicazione dopo aver copiato un'immagine negli
appunti di windows. E' possibile creare un nuovo file, "copiarci" dentro
il contenuto degli appunti e poi salvarlo (possibilmente in formato
BITMAP)?
Grazie in anticipo, Michele
-- 
"Guai a coloro che il Signore troverą ad occhi asciutti" (Gustavo
Gutierrez)
*******************  ##    ##   ####
Michele de Concilio #  #  #  #  # 
SGE Computers        #    #     #
Salerno,  Italy       #   # ##  ###
http://www.sge.it
   #  #  #  #  #
*******************  ##    ##   ####

 contenuto della Clipboard.
Devi chiedere su it.comp.programmare.win32
--
________________________________
per rispondermi iliasba(at)
tin.it
bye Brain
Newsgroup: it.comp.lang.c
Titolo: Media per n vettori, non funziona!

Oggi all'uni ho fatto questo programma che calcola la media di 10
numeri da un vettore:
#include <stdio.h>
int main()
{
 int a[10], i, som;    
 for (i=0; i<9; i++)
 {
  printf("Inserisci un valore: \n");     
  scanf("%d", som);
 } 
 
  som = som/9;
  printf("Il risultato della media e': %d", som);
  return 0;
} 
con dev c++ 4 non partiva, la prof. m'ha detto che il programma è
corretto! allora dove sbaglio?
grazie!

 wrote

questo non fa altro che prendere l'ultimo numero inserito e dividerlo per
9....
Non e' per nulla corretto! Tra le altre cose il vettore nemmeno lo usi....
Tommy

 Nel dar retta alla prof.
Beh, dai, non critichiamo troppo... in fondo quello di forzare gli 
studenti ad usare un certo sistema invece che un altro e' il tipico modo 
per costringere a fare esercizi in modo da imparare un certo aspetto del 
linguaggio. Al max la prof va condannata per essere riuscita a scambiare 
  questo codice per corretto... e se non ha detto che il modo piu' 
giusto ed elegante e' quello dato da te ;-)
-- 
/**
  * Mattia Belletti - Undergraduate student @ 
cs.unibo.it
  * ICQ: 33292311   - email: 
mbel...@cs.unibo.it
  * IRC: BluShine   - site(s): 
http://cs.unibo.it/~mbellett
  * Linux registered user 299762 @ Linux registered machine 213003
  */

...

Esattamente come ti ha detto Tommy questo programma non fa altro che
prendere l'ultimo numero inserito e dividerlo per 9.
Per farlo funzionare il vettore non è indispensabile, basta che tu
faccia così:
int n, sum;
sum = 0;
for (i = 0; i < 10; i++)
{
    printf ("Inserisci un valore: ");
    scanf ("%d", &n);
    sum += n;
}
printf ("Media: %f\n", (float) sum / 10);
Attenzione ai seguenti particolari:
- nella scanf bisogna usare l'operatore & per quello che devi
specificare è l'indirizzo della variabile in cui vuoi che venga
caricato il valore letto (in questo caso n);
-  quando stampi la media devi aggiungere (float) perché altrimenti
viene stampata solamente la parte intera della media.
Se proprio vuoi caricare i valori nel vettore devi fare così:
int n, sum, v[10];
/* Carica i valori nel vettore */
for (i = 0; i < 10; i++)
{
    printf ("Inserisci un valore: ");
    scanf ("%d", &v[i]);
}
/* Calcola la media */
sum = 0;
for (i = 0; i < 10; i++)
    sum += v[i];
printf ("Media: %f\n", (float) sum / 10);
Attenzione ancora ad un particolare: come ti avranno spiegato, in C
dichiarando un vettore di k elementi ci puoi accedere con indici da 0
a k-1. Nel ciclo for, quindi, se vuoi riempire tutto il vettore,
l'inizializzazione dell'indice i = 0 è giusta ma la condizione di
uscita è i < 10 oppure i <= 9 (perché l'indice 9 è ancora valido).
S. B.

Marco
Ringrazio a tutti per le risposte :) e per aver chiarito!
Newsgroup: it.comp.lang.c
Titolo: concatenazione stringhe

Buona sera, ho bidogno di saper come si concatenano due stringhe in c..
per esempio:
char a[50];
a="pippo";
char b[7];
come appendo b ad a?
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Buona sera, ho bidogno di saper come si concatenano due stringhe in c..
guardati la funzione strcat (string.h)
che serve per accodare una stringa ad un altra.
ciao,
g.

 
strcat(a, b);
Pero` devi assicurarti prima che le stringhe siano regolarmente 
terminate da '\0' e che la nuova stringa non superi la dimensione del 
buffer (carattere terminatore compreso).
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   Registered Linux user #337974  < 
http://giovanni.homelinux.net/
 >

come appendo b ad a?
strncat() / snprintf()

Andrea Laforgia wrote:

si, avevo dimenticato di dirti che strncat
e' la versione "+ sicura" di strcat, perche'
permette di specificare la dimensione massima,
e quindi puo' evitare buffer overflow etc.etc.
ciao,
g.

usando il caratttere &
esempio: stringa1 & stringa2
"vanvera" <vanve...@CUTgmail.com> wrote in message
news:45539053$0$3199$4faf...@reader2.news.tin.it...


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

Avete mai sentito parlare di crobots??


Siete pronti per il megatorneo ???
(sponsorizzato dalla rivista IO PROGRAMMO)
Il sito ufficiale e' questo
http://www.gol.it/crobots/
la partecipazione e' gratuita... fatevi sotto !
Inoltre, entrate tutti nella crobots mailing list !!
Buona
fortuna
zava...@hotmail.com

Avete mai sentito parlare di crobots??
Certo, è un'arena in cui a darsi battaglia sono dei programmi scritti
in un linguaggio C-like.
Come al solito, vince il migliore.
--------------------------------------------------------
* Andrea Laforgia        (
andrea_...@bigfoot.com
) *
--------------------------------------------------------
Newsgroup: it.comp.lang.c
Titolo: SQL Embedded in C : come fare? dove documentarsi?

Salve.
Studiando i Sistemi Informativi,
mi č venuta una curiosa voglia di approfondire
l'interrogazione di basi di dati (locali e/o remote),
mediante query SQL, da un programma scritto in C .
(es. ODBC, OLE DB, 
OLE.NET
)
Dove potrei documentarmi seriamente?
(magari con guide/testi in italiano)
So che serve un pre-processore per la parte "interrogativa"
e solo in un secondo momento si puņ compilare il programma.
Dove lo prendo questo preprocessore??
Come usarlo all'interno di un IDE ?
Oracle Express 10g consente di ottenere ciņ che voglio?
Grazie per l'attenzione.
A presto!
F.
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

dipende dal DB
per mysql un famoso database opensource (ora di oracle) usi delle api in
c, 
http://dev.mysql.com/doc/refman/5.0/en/c.html
per oracle (non server nessuna presentazione) hai l'oracle connection
interface, detta oci,
http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14250/toc.htm
sqlite (un database piccolo, efficente, sql molto molto basico, quindi
facile da usare, libreria compilabile staticamente poco più di 300k):
http://www.sqlite.org/capi3.html
Nella mia esperienza personale farlo da C++ è più semplice se non altro
perchè hai la std::string
saluti

 perchè hai la std::string
mmm ... capisco .
meglio dal C++ che dal C , quindi ?
Grazie per l'ottima risposta.


 non è ancora di Sun ??
Oracle sta per comprare SUN. Se non ci sono problemi di antitrust o 
altro, entro l'estate finalizzano l'accordo.
R.D.

 ha
scritto:
[CUT]
e per la parte sul preprocessore??
In pratica, dopo aver scritto in programma in C + SQL Embedded,
come lo compilo ?
Cosa consigli ?
Grazie e Ciao !
