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

Ciao,qualcuno sa come posso distinguere un file da una directory sotto UNIX.
Ho fatto una scandir,ma non so come fare?
Grazie,Marco

"Marco"  ha scritto nel messaggio

spiegati meglio!
Vuoi fare un prog in c che ti rileva le directory distinguendole dai files?

 
Prova con stat (man stat) e guarda "st_mode" 
es.
int x = stat(nome,&sbuf);
// Ignoriamo i link 
if ((sbuf.st_mode&S_IFMT) == S_ISDIR) {printf("%s e' una directory\n",nome):}
ciao simone

Newsgroup: it.comp.lang.c
Titolo: www.astapiu.it mette in palio 1 milione in buoni benzina

In attesa del lancio del sito previsto a inizio dicembre,
www.astapiu.it
 mette in palio 1 milione in buoni benzina.

                         -- Groucho Marx --
Mi Associo!



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

Ciao a tutti,
             sono uno studente di informatica. Devo fare un esame di
progr C sulle torri di Hanoi.
1) Deve essere grafico.
2)Devo poter decidere il numero di dischi nella prima torre (fino a 64
dischi).
3)Devo salvare il file in .xml.
4)Devo riuscire a salvare la partita quando voglio e caricarla.
5)Il file salvato può visualizzarmi le mosse compiute fino a quel
punto
6)Lo spostamento dei mattoncini deve poter essere o manuale (utente) o
automatico(computer).
7)La velocità di esecuzione dello spostamento dei mattoncini in
automatico o nel replay devo poterla scegliere.
Premettendo che sono alle prime armi della programmazione c, potreste
consigliarmi manuali, sorgenti reperibili in Internet, aiuti, per poter
creare il progetto?

 creare il progetto?
Ovviamente il Kernighan&Ritchie, Google, e un po' di fantasia. Se cerchi
sul web sicuramente trovi tonnellate di esempi di programmi per le torri
di Hanoi, ma se copi e basta non imparerai mai nulla. Prova ad inventare
qualche soluzione e poi, magari, la confronti con quello che c'e` in
rete.
Saluti,
Marco
-- 
To email me, remove the no_ and _spam from my address.

 L'XML e` un formato ASCII...
No, non lo č, perň č possibile scrivere file XML in ASCII.
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 No, non lo č, perň č possibile scrivere file XML in ASCII.
Hai ragione, sono stato approssimativo, avrei dovuto dire "testuale".


Newsgroup: it.comp.lang.c
Titolo: Esercizi in C - AIUTO :°

Scusate il post un po' insolito.
Dovrei portare in università degli es. di C per martedì, ma per alcuni 
non so proprio che pesci pigliare. Dato che vengono valutati, chiedevo 
se qualcuno fosse disponibile a darmi una mano. Non si tratta niente di 
trascendentale, sicuramente per la maggiorparte di voi saranno delle 
bazzecole, ma essendo assolutamente un newbie e per di più con esami da 
superare nell'immediato futuro, ho proprio bisogno del vostro aiuto. Non 
posto subito i testi degli esercizi per non intasare inutilmente il NG, 
se qualcuno se la sente di aiutarmi può scrivere al mio indirizzo di 
posta. Grazie a tutti coloro che risponderanno.
Ciao!


I compiti a casa non si fanno fare dagli altri :)  Magari se ci provi
e poi qui posti i dubbi che sono emersi impari anche qualcosa.
Mox

, 
mad...@technologist.com
 says...

Newsgroup: it.comp.lang.c
Titolo: MEMORIA CONDIVISA HELP!

Ciao a tutti,
ho un disperato bisogno di aiuto e spero che qualcuno di voi possa aiutarmi.
Il mio problema è il seguente:
non riesco ad allocare un seg,ento di memoria condivisa per un array
dinamico, per una variabile intera non c'e' nessun problema, ma per un array
dinamico non cui riesco. La compilazione non mi da nessun problema, pero'
usando delle fork all'interno del programma la memoria condivisa non viene
vista (e quindi condivisa) dai processi figli.
Il codice seguente è quello che uso per dichiarare l'array dinamico e la
memoria condivisa ad esso associato. Il problema come ho già detto è che
tale array non viene condiviso e quindi ci deve essere qualche imperfezione
nel codice seguente (anche se in fase di compilazione non c'è nessun
errore):
// dichiarazione delle variabili
typedef struct {
            char *data;
                 char *res;
             } cache_record;
cache_record *cache;
// allocazione della memoria per l'array dinamico
cache = (cache_record *) calloc(100, sizeof (cache_record));
if (cache == NULL)
   printf("\nERRORE: spazio insufficiente per l'allocazione della CACHE
!!!\n");
// creazione della memoria condivisa per l'array dinamico
if ((shmid1 = shmget(SHMKEY1, sizeof(*cache), PERMS | IPC_CREAT)) < 0)
   printf("server: can't get shared memory 1");
  if ((cache = (cache_record *) shmat (shmid1, (char *) 0, 0)) ==
(cache_record *) -1)
   printf("server: can't attach shared memory 1");
Avete per caso trovato qualche errore?
C'è qualcuno che sa come fare?
GRAZIE.
P.S.: Potete rispondermi anche tramite e-mail: 
gro...@dsi.unive.it
 Ciao,
      Giuliano

   printf("server: can't attach shared memory 1");
Non ho mai usato shared memory ma vedo il passaggio del valore
sizeof(*cache) come decisamente sospetto. Ti e' chiaro che
sizeof(*cache) == sizeo(cache_record) ?
Secondo me bisognerebbe moltiplicare la cosa per 100...
Inoltre e' proprio necessario allocare prima la cache in locale ?
Dopo aver allocato quella memoria te ne dimentichi (riassegnando
cache) e non credo che la cosa abbia alcun senso.
Il concetto non e' che si alloca memoria e poi la si "rende
condivisa"... quello che si fa e' "allocare memoria condivisa"
(credo con shmget).
Andrea
--
Andrea Griffini, Programmer
http://www.netservers.com/~agriff

Newsgroup: it.comp.lang.c
Titolo: SEGNALAZIONE SITO

vi segnalo : 
www.vorreisapere.com
una redazione "umana" risponde a tutti gli interrogativi posti........e
sembrano essere efficienti!
ciao Sandro

Sandro,

  Hai provato a chiedere cosa significhi "spam"?
	Alla prossima,
		Marco

vi segnalo : 
www.vorreisapere.com
una redazione "umana" risponde a tutti gli interrogativi posti........e
sembrano essere efficienti!
ciao Sandro
Newsgroup: it.comp.lang.c
Titolo: Finalmente djgpp!!! :DDD

Ce l'ho fatta! :DDDDD
Ora funge...
solo quando do' run mi da sempre una casella di info che solitamente mi dice
"Program exit code: 0 (0x0000)"
E' normale? Indica la buona riuscita dell'esecuzione oppure no!?
Cmq sta di fatto che sei poi lancio ALT+F5 per veder la parte dos....è
perfettamente eseguito :DDD
un grandissimo GRAZIE a tutti coloro che mi hanno aiutato! :D
thx
byez
B@STI


I'm not prejudiced, I hate everyone equally.

 ma hai mai provato Linux ???
YEP :D solo che ci so fare poco e nulla :(
Ma non vedo l'ora di capirci seriamente qualcosa per cestinare windows!
Thx
Byez
B@STI

 B@STI
ciao


 
Lo standard afferma che la funzione main deve avere int come
valore di ritorno e' puo' essere dichiarata
int main(void);
int main(int argc, char* argv[]) o equivalenti [1].
L'obbligo di restituzione del valore int e' dovuto al fatto
che il programma potrabbe essere chiamato da uno script (ad es.)
che controlla il valore di ritorno. Non e' una cosa intelligente
basare la prosecuzione dello script sul controllo di un valore
piu' o meno casuale.
C:\>iao Angelo.
[1] Alcuni ambienti (Linux, Windows per programmi a carattere,
    Solaris) accettano anche la forma 
    int main(int argc, char* argv[], char** envp)
    dove envp punta alle variabili d'ambiente. E' una forma da
    evitare anche se qualche volta la si trova (soprattutto in
    programmi per Unix) come e' da evitare void main(void) :-)
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

il fatto è che il fatto di void main(void) me l'ha detto una che si reputano
le mie insegnanti di programmazione...!!! Vabbe'...non saranno delle cime di
programmazione...ma almeno so parecchio bone ;)
byez
B@STI

 installare.
ho già una red hat 7.2 che viaggia da Dio! :D
byez
B@STI

 byez B@STI
ciao .. buon lavoro ..



una sola !!   ;))


main deve ritornare un int .... e nel caso di riuscita esecuzione 0
In realta', il valore che lo standard suggerisce e'
EXIT_SUCCESS.  In ogni caso, non e' rilevante che il
programma restituisca un valore al sistema operativo.  La
cosa + importante e' che main sia dichiarato "int" per non
contravvenire alle convenzioni di chiamata che si possono
avere tra codice di start-up e codice di programam.
-- 
Andrea Laforgia (
walkie...@libero.it
)
"Usenet is a strange place" [Dennis Ritchie]
Newsgroup: it.comp.lang.c
Titolo: Funzione ScanDir

Sapete dirmi che funzione potrei usare per poter trovare tutti i nomi dei
file in una directory (lavoro sotto Linux con gcc) e metterli in delle
variabili?
(Sono ben accette parti di codice di esempio................).
Ciao
Duccio


Non le ho mai usate, ma so che esistono e che dovrebbero fare quello che 
chiedi:
man opendir
man readdir
-- 
Andrea Bergia - studente
Linux Registred User #281550

Newsgroup: it.comp.lang.c
Titolo: test porte con telnet

Ciao, dovrei creare un programmino in c in grado di testare una porta
specifica per circa 2000 server (presi da un file di testo, la porta è
sempre quella), e scrivere in output su un file di testo quali tra
questi server rifiutano la connessione, e la data di ogni "loggata".
Di per se la lettura da file degli ip/hostname non è difficile, e
anche lanciare il "telnet ipnumber porta" lo saprei fare, ma non so
come fare per chiudere i telnet che rimangono "appesi" e come eseguire
più telnet in contemporanea, ad esempio una ventina e anche come
loggarli cioè come scrivere (e leggere) contemporaneamente righe
diverse in un file.
Ogni aiuto è ben accetto.
Grazie

sprem...@gmail.com
 ha scritto:

dimenticavo di scrivere che il s.o. è windows...purtroppo

usa una libreria già fatta .... per esempio libcurl ...
ciao
PP
spre...@gmail.com
 ha scritto:


 specifica per circa 2000 server[...]
Per la trattazione del tuo problema è più indicato un gruppo in cui si
discuta di programmazione Windows. Rivolgiti a
it.comp.os.programmare.win32.
Qui dentro si preferisce parlare, il più possibile, di aspetti che
astraggano dalla piattaforma specifica e riguardino il linguaggio nudo e
crudo.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 
ok allora astrai pure dalla piattaforma, meglio di niente...

 ok allora astrai pure dalla piattaforma, meglio di niente...
Probabilmente non ti è sufficientemente chiaro.
Te lo ripeto: per la soluzione del tuo problema, devi rivolgerti al gruppo
suggerito.


 suggerito.
sto parlando di linguaggio c, se non hai altro da dire ciao

 sto parlando di linguaggio c, se non hai altro da dire ciao
Non stai parlando di linguaggio C, ma di qualcosa che col C c'entra poco e
niente.  Se hai questioni legate allo standard ISO, allora ne possiamo
parlare.  In caso contrario, ti ho già consigliato gentilmente di
spostarti sul gruppo specifico.  Fallo, per cortesia.


 
hai un concetto di gentilezza un pò ambiguo
bye

 hai un concetto di gentilezza un pņ ambiguo
In quale punto del thread sono stato scortese ? illuminami.

Newsgroup: it.comp.lang.c
Titolo: parallela settata come ingresso

Qualcuno sa come settare la parallela come ingresso sui computer recenti?
Su quelli "datati" era sufficiente scrivere 0xff all'indirizzo della porta e
poi leggere il valore :
outp(0x378,0xff);
data=inp(0x378);
ma sui computer recenti la porta resta settata elettricamnete come ingresso
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Sinceramente, non so come ci si interfaccia con una porta parallela recente,
ma hai provato a reimpostare la cobfigurazione da bios della porta? ovvero
settandola ltp e non ecp/epp?
--
{G}eppo
Panther Power 3D Studio - Coder of GBA Team
www.panther3d.com
L'uomo utilizza solo il 10% del suo cervello
il restante 90% č file di swap del sistema operativo
Newsgroup: it.comp.lang.c
Titolo: Gestione di una stringa binaria

Ciao a tutti, ho il problema di memorizzare una stringa binaria ricevuta in 
input da console, potenzialmente infinita. Avevo pensato di trattare ogni 
singolo 0/1 come un char, più precisamente con un codice di questo tipo:
<CODE>
char *grepbin(FILE *fp)
{
  char *string = malloc( BLOCK * sizeof(char) );
  char c;
  int i = 0;
  c = fgetc(fp);
  while( ( c = fgetc(fp) ) != EOF && isdigit(c) )
    {
    string[i++] = c;
    printf("%d\n", i);
    if ( !(i % BLOCK) )
      {
        string = realloc( string, (i/BLOCK +1) * BLOCK * sizeof(char) );
      }
    }
}
</CODE>
Con questo procedimento spreco 1 byte per ogni 0/1, ma non saprei come 
rappresentare altrimenti la stringa. Avete suggerimenti ?
Grazie
iesse

 rappresentare altrimenti la stringa. Avete suggerimenti ?
Mah, non credo che uno "spreco" del genere sia letale, anche perche' 
questo e' probabilmente il metodo piu' efficiente (dal punto di vista 
prestazionale).
Se proprio lo spazio di memoria e' il tuo punto debole, allora puoi 
semplicemente utilizzare dei char (assumendo abbiano dimensione 1 
byte... non ricordo, e' effettivamente cosi' di standard in C? 
Altrimenti limits.h dovrebbe fornire i dati che ti servono...), ma 
scrivendo un bit per volta - al posto del semplice "string[i++] = c;", usa:
string[i/8] = string[i/8] | (c<<(i%8));
e ricordati di inizializzare a zero tutti i char di string[] quando la 
allochi e quando la ingrandisci.
Per leggere l'i-esimo valore:
(string[i/8] & (1<<(i%8))) >> (i%8)
Il codice e' buttato giu' senza controllare (tanto piu' che lavoro coi 
bitwise molto di rado), ma e' giusto per dare l'idea :P
-- 
/**
  * 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
  */

 Altrimenti limits.h dovrebbe fornire i dati che ti servono...), 
sizeof(char) e' sempre 1 in C.
Tommy

         string = realloc( string, (i/BLOCK +1) * BLOCK *
sizeof(char) );
Mai usare realloc() a questo modo.  Controlla sempre che il valore
restituito da realloc() sia valido.

 byte... non ricordo, e' effettivamente cosi' di standard in C?
Un char in C ha sempre lunghezza 1 byte.  Non č detto che in generale
un byte abbia lunghezza 8 bit, anche se ormai nella stragrande
maggioranza dei casi č cosě.

 restituito da realloc() sia valido.
Avevo pensato al controllo, ma nella prima implementazione me ne sono
scordato..
Grazie per i consigli
Byez
iesse

   while( ( c = fgetc(fp) ) != EOF && isdigit(c) )
Credo tu possa eliminare la riga:
c = fgetc(fp);
prima del while.
Marcello

 Marcello
Grazie
iesse

iesse wrote:

Maddeche' iesse...
Scusa tu, se non ho capito l'utilita' della riga. ;)
Marcello
Newsgroup: it.comp.lang.c
Titolo: [NEWBIE] Esiste in C la funzione matematica 'modulo'?

Come da oggetto, come posso fare per ottenere il modulo di una funzione come
il sin o il coseno???
Grazie a tutti
M D

il sin o il coseno???
Se intendi il valore assoluto la funzione e' fabs().
Andrea
--
Andrea Griffini, Programmer
http://www.netservers.com/~agriff

Newsgroup: it.comp.lang.c
Titolo: compilare sotto linux

Ciao a tutti..
ho scritto un programma in c.
l'ho compilato e funziona.
volevo passarlo a dei miei amici che usano un altro sistema operativo 
(windows).
come faccio per compilare sotto linux il mio programma e creare un 
eseguibile per dos?
grazie a tutti
ciao
-- 
andrea

andrea wrote:

ti consiglio di spostarti su i.c.o.linux.development o iniziare
cmq devi avere il gcc compilato per il crosscompiling con librerie e tutte in 
cross e poi definire come host linux e come targhet windows o dos ... cmq se usi 
librerie e molte altre cose e' meglio che ti procuri direttamente tale so e fai 
le prove di compilazione perche' il piu' delle volte non e' una passeggiata fare 
porting ...
ciao

 eseguibile per dos?
Puoi usare un cross compiler, come ad esempio mingw. Ma attento, non è
detto che un sorgente linux sia compilabile per windows.
-- 
| /
| \Byte - Andrea Briganti - kbytesys(aaattt)
tiscali.it
CSLug member: 
http://cslug.linux.it
 - JID: 
kb...@jabber.linux.it
***Lo zero tende talmente a zero che sembra quasi zero (Prof. univ.)
Newsgroup: it.comp.lang.c
Titolo: COPIA&INCOLLA IN TURBO C 2.0

E' possibile eseguire le normali operazioni di copia&incolla in Turbo C 2.0?
Se si(lo spero!!!), quali comndi bisogna utilizzare?
Grazie per l'eventuale risposta
Ciao

 ha scritto nel messaggio
news:9gq24g$tmd$1...@nreadA.inwind.it...

nel TC non esisteva il concetto di clipboard ma solo di blocco attivo, devi
quindi evidenziare un blocco di testo e poi puoi copiarlo, muoverlo o
cancellarlo (definitivamente).
devi usare i comandi del vecchissimo WordStar:
marchi l'inizio del blocco con la sequenza: CTRL+K B
marchi la fine con : CTRL+K K
poi di sposti dove vuoi inserilo e usi
per copiare il blocco: CTRL+K C
per spostarlo: CTRL+K V
per cancellarlo definitivamente (niente undo) CTRL+K Y
CTRL+K L  ti permette di selezionare la linea corrente
CTRL+K T  ti permette di selezionare la parola sotto al cursore
cmq trovi tutto nell'help in linea
ciao
donCiccio

 ha scritto nel messaggio
news:tM1Y6.10318$i51.1...@news2.tin.it...


 ha scritto nel messaggio
news:tM1Y6.10318$i51.1...@news2.tin.it...



dal menu' Help, per esempio
ciao
donCiccio


peccato, ci ho provato! :-)
a parte gli scherzi, prova meglio, sono le stesse dal turbo C V1.0 al
BorlandC++ v5.0 (qui configurabili pero')
ciao
donCiccio

Newsgroup: it.comp.lang.c
Titolo: Passaggio campi struct ad una funzione

I prototipi delle funzioni di una libreria che devo utilizzare sono
spesso e volentieri una cosa di questo tipo:
// libreria.h
int f( CONST void *in,
       Tipo_out **out, ...)
"in" e' un puntatore ad una struttura di libreria (di tipo Tipo_in) che
la funzione deve leggere, mentre "out" e' un'altra struttura di
libreria (di tipo Tipo_out) che la funzione inizializza e di cui viene
restituito il puntatore.
In un main() richiamo la funzione passando i parametri in questo modo:
// esempio.c
main() {
    ...
    Tipo_in *in_p;
    Tipo_out *out_p;
    ...
    res = f((void *) in_p, &out_p, ...)
    ...
}
ma ora ho la necessita' di usare un file header, con questa
dichiarazione:
// tipi.h
typedef struct {
    Tipo_in *in_p;
    Tipo_out *out_p;
} str;
Come faccio a richiamare i campi della struct nel modo corretto per la
funzione f?
Mi hanno suggerito qualcosa di questo tipo:
// test.c
int test(void) {
    str *s;
    f((void *) *s->in_p, s->out_p, ...);
}
ma non funziona....
Non ho le idee molto chiare, vado a ripassare un po' di teoria.
Nel frattempo qualcuno puo' aiutarmi a fare un po' di luce?
Grazie per l'attenzione!
GePs.

 Giovanni
Ciao e grazie!

Newsgroup: it.comp.lang.c
Titolo: help C e windows

 APOGEO
Primo problema.. il testo indica e propone lo studio di programmi da un 
sistema UNIX.. come faccio ?
Il mio S.O. è Windows... Posso provare gli stessi programmi pur con questa 
piattaforma?
se si come ?
Grazie
Elena

 Elena
ciao
claudio



Certo, scarica DevCPP, se vuoi ti do il mio msn o icq per contattarmi
online :)
XBoxLive TAG: Criceto
MarioKartDS friend's code: 528342 - 062642


Te ne sarei gratissima :-))) Il mio MSN č lo stesso indirizzo di posta:
free...@tin.it
il nick č freegull
assieeeeeeeeeeeeee 'petto č?....
^_________^
Eli
Newsgroup: it.comp.lang.c
Titolo: Disassemblare EXE e DLL

Salve, amici.
Ho delle DLL e degli EXE sfornati col Borland C++ del 1991 (penso sia
la versione 3.0). Vorrei disassemblarli nel modo piu' leggibile
possibile per capire come funzionano alcune funzioni. Dritte ?
Bye
PC
############## FREE CHIORI ##############
(Chiori e' un pirata telematico agli arresti domiciliari
da 2 mesi. Esprimi la tua solidarieta' inserendo
queste righe al termine dei tuoi messaggi)
############## FREE CHIORI ##############


Dritte?? NON FARLOOOOOO!!!!
se vuoi disassemblare un eseguibile (ma anche una DLL) , protresti sempre
usare il Wdasm, ma ti verrebbe fuori una brodaglia incomprensibile di
centiania di Kb (anche solo per sorgenti di poche righe), se ti interessa
piuttosto vedere al meglio le funzioni in ASM, ti consiglio di fare quanto
segue:
quando compili un sorgente, metti la seguente direttiva in cima al file:
#pragma inline
cosi verrą creato un file di asm per il tuo sorgente, che magari non verrą
compilato (ti dirą che ti manca il TASM.EXE, ma che comunque potrai
leggere!)
es: sorgente.cpp diventerą sorgente.asm
Ciao by Tdx!!!


usare il Wdasm, ma ti verrebbe fuori una brodaglia incomprensibile
Hai ragione, ma forse mi sono spiegato male.
Per "disassemblare" intendevo dire che vorrei risalire non dico al
codice C originale ma ad un qualcosa di piu' leggibile dell'assembler.
Inoltre, dovrei solo capire come lavorano, senza la necessita' di
modificarle.
Una volta ho perso i sorgenti CLIPPER (Glorioso !!!) di un lavoro
fatto per un cliente. Dall'EXE, con uno strepitoso disassemblatore,
risalii ai sorgenti e il lavoro di rifinitura fu minimo (tutte le
variabili vennero chiamate var01, var02, ..., idem per le procedure,
ecc.).
Se una cosa cosi' esistesse anche per questo attuale problema, sarei
capace di fare un salto mortale all'indietro con un dito nel naso,
dalla felicita'.
Bye
PC


Io una volta avevo un buon disassemblatore per DOS/Windows,
ma è passato un sacco di tempo!
Prova a cercare in giro sulla rete.
Ciao
Benedetto
bene...@altavista.net

 possibile per capire come funzionano alcune funzioni. Dritte ?
Prova con IDA (
www.datarescue.com
)
-- 
Luigi Pugnetti
Newsgroup: it.comp.lang.c
Titolo: problemi di preprocessore

Supponete di avere un file con:
#define PREFISSO        /tmp
#define BASE            PREFISSO/bin/base
 
BASE
la macro viene epansa a /tmp/bin/base. Siccome però quasta macro deve
essere messa dentro a funzioni che vogliono char* mi servono me
virgolette. Se metteo 
"BASE" 
non viene fatta la sostituzione. Idem se definifisco
#define BASE            "PREFISSO/bin/base"
come diavolo faccio a farci mettere le virgolette e ad avere la
sostituzione della macro?

 sostituzione della macro?
Qualcosa del genere: (vado a braccio, quindi verifica tu...)
#define BASE pippo
#define EXT mydir/pluto
#define GLUESTRTOKENS(a, b) "a##b"
Prova.
Gio

 #define GLUESTRTOKENS(a, b) "a##b"
no, non va bene "a##b" viene visto come una stringa e non viene fatta la
sostituzione.

 ha scritto nel messaggio
news:pan.2003.05.17....@nospam.vi.it...

Questo va bene?
-----------------------------------------
#include <stdio.h>
#define PREFISSO "/tmp"
#define BASE PREFISSO"/bin/base"
int main(void) {
  printf("Stringa: %s",BASE);
  return 0;
}
-----------------------------------------
Ciao,
Ema

 sostituzione.
Il seguente metodo da' un warning con cpp 3.2.
#define STR(s) #s
#define XSTR STR(s)
#define PIPPO myfile
#define PLUTO mydir/
#define GLUE(a,b) a##b
#include <stdio.h>
int main(void) {
printf("\"%s\"\n", GLUE(XSTR(PLUTO), XSTR(PIPPO)));
return 0;
}
Fammi sapere se riesci ad eliminare il warning trovare q.cosa di meglio...

sostituzione della macro?
   In C scrivere "/tmp/bin/base" oppure "/tmp" "/bin/base" e`
assolutamente equivalente. Quindi puoi tranquillamente fare:
#define PREFISSO        "/tmp"
#define BASE            PREFISSO "/bin/base"
   poi, nel codice, usi BASE senza virgolette. Ad es.: puts(BASE);
-- 
S.L.

Newsgroup: it.comp.lang.c
Titolo: bool mancante

Intanto ringrazio in anticipo chiunque spenda i suoi 5 minuti per la mia
causa. Tagliando corto, possiedo una versione di turbo C++ che non ha il
comando per definire variabili di tipo booleano (Bool nomevar;). Devo forse
procurarmi un nuovo turbo C++ senza questo problema? Se si, sapreste dirmi
l'indirizzo internet?
Grazie
Ruben
--------------------------------
Inviato via 
http://usenet.libero.it

comando per definire variabili di tipo booleano (Bool nomevar;).
"Bool" non esiste, al massimo "bool" e poi ti riferisci al C (in qui
il bool è stato introdotto solo molto recentemente) o al C++?
Comunque il TurboC++ è un compilatore vecchio, dovresti passare a
qualcosa di più recente.
-- 
Marco Barisione (ICQ 84277092)

procurarmi un nuovo turbo C++ senza questo problema? 
direi che lo puoi decidere solo tu! Avere il tipo Bool non è che ti
cambi la vita e comunque puoi tamponare con un paio di #define...
Viceversa se il compilatore non prevede il Bool probabilmente è un po'
datato e gli mancherà anche qualche altra cosa... tipo i namespace...
quindi se lo stai utilizzando per imparare a programmare secondo lo
standard può essere utile procurarsi un compilatore più aggiornato 
ciao
Andrea
-------
http://space.tin.it/io/andrea.fa
Newsgroup: it.comp.lang.c
Titolo: Newby: ISO C e ANSI C

Ciao, scusate il subject banale, ma: qual'è la differenza tra i duen
standard? Se non ve ne sono perchè vi sono cmq due specifiche?

standard? Se non ve ne sono perchè vi sono cmq due specifiche?
una differenza semplicissima...
il primo non esiste (esiste l'ISO C++)
il secondo esiste (l'ansi C ma non l'ansi C++)
le differenze stanno a livello di specifiche ...
però il comitato ANSI si sta piano piano allineando al
comitato ISO C++ per quanto riguarda alcune regole
ciao
cod

 il primo non esiste (esiste l'ISO C++)
Come non esiste???
ISO/IEC 9899-1999 aka C99
e` un'evoluzione dello standard ANSI (che risale, se non sbaglio,
all'89).
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
"New processes are created by other processes, just like new
 humans. New humans are created by other humans, of course,
 not by processes." -- Unix System Administration Handbook

all'89).
abbé......
ma che cambia?
cod

 ma che cambia?
Stavo puntualizzando il fatto che esiste l'ISO C.
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
Sono un mirabile incrocio tra Tarzan e Giacomo Leopardi.
In me convivono tutte le doti intelluttuali di Tarzan e
tutta la prestanza fisica di Giacomo Leopardi.
A. Borsani

Newsgroup: it.comp.lang.c
Titolo: sqrt , math.h e gnu

Chi mi spiega perchč con questo programma il gnu mi dice che non puň 
lincarela libreria ???Ogni volta che uso sqrt includendo anche math.h mi 
da sempre errore e non compila piů nulla!!!Cosa devo fare??
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
	int x;
	float y;
	x=10;
	y=sqrt(x);
	printf("%f",y);
	return(0);
}
GRazie
<<SAX>>


I'm not prejudiced, I hate everyone equally.

cc -o eseguibile sorg.c -lmat	(o math ... non mi ricordo ;-))
Nessuna delle 2 :P
cc -o eseguibile sorg.c -lm
Con le librerie che si chiamano libm.a, quindi -lm
-- 
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."

 Mox
ciao ...

Newsgroup: it.comp.lang.c
Titolo: CIAO A TUTTI !!!

>Visita il mio sito erotico :
Ma visitati qualcos'altro !
""""""""""""""""""""""""""""""""""""""""""""""
 -----------Federico Emanuele Galli----------
 ----------Visual Basic's Programmer---------
 
 Sideralis Programs (Visual-Basic and Delphi)
 
http://www.geocities.com/colosseum/loge/2151
""""""""""""""""""""""""""""""""""""""""""""""
                 Trust no ONE.


http://www.angelfire.com/la/pamela69696969

Newsgroup: it.comp.lang.c
Titolo: Puntatori: mi sfugge qualche cosa

Salve a tutti,
vorrei chiedervi aiuto per qualche dubbio che ho sui puntatori e che sto
incontrando nella costruzione di un banale programma in C.
Vi copio un codice di esempio che non funziona e non capisco come farlo
funzionare, vi pongo poi le domande:
typedef struct
{
    int iFirst;
    int iSecond;
} TEST, *LPTEST;
static void CopiaStruct( TEST **lpstruct, int size)
{
    register int i;
    for ( i=0; i < size; i++)
    {
        printf("Stampo: %d - %d-%d\n", lpstruct[i]->iFirst,
lpstruct[i]->iSecond);
    }
    return;
}
int main()
{
    TEST miastruttura[2];
    TEST *puntatorestruct;
    miastruttura[0].iFirst  = 1;
    miastruttura[0].iSecond = 2;
    miastruttura[1].iFirst  = 1;
    miastruttura[1].iSecond = 2;
    CopiaStruct( &miastruttura , 2);
    return 0;
}
Quindi, dato il mio array di 2 strutture "miastruttura", come faccio a
utilizzare questo array di strutture dentro la funzione "CopiaStruct".
Questo codice viene compilato senza problema dal gcc sotto linux ma quando
lo eseguo mi accorgo che oltre il primo ciclo del for lui va in
"Segmentation fault".....sembra quasi che in questo modo
io gli passo solo il primo elemento quando invece vorrei passare alla
funzione tutto l'array della struttura.
Scusate, ho un pochino di dubbi in merito, il codice sopra scritto lo
dedotto da queste mie considerazioni:
    -    miastruttura è il puntatore al primo elemento dell'array (giusto?);
    -    Se passassi solo "miastruttura " alla funzione passo la struttura
per valore e non per riferimento;
    -    Quindi passo il puntatore al puntatore per passare la variabile per
riferimento.
Mi sa che sto scrivendo un sacco di castronerie.....mi date una mano a
capire?
Non mi interessa tanto la risoluzione del codice ma solo capire
concentualmente questa situazione.
Ringrazio sin da ora tutti coloro che vorranno darmi una mano.
Saluti a tutto il newsgroup.
Sardone

          riferimento.
No. Passi il nome dell'array.
Spero di essere stato chiaro e, soprattutto, corretto.
Ciao
Marcello

 >     -    miastruttura è il puntatore al primo elemento dell'array

Newsgroup: it.comp.lang.c
Titolo: Premessa: Non so niente di C!

Io non so niente di C e l'unica idea che mi sono fatto su di lui è che è un
linguaggio per creare programmi (credo che sia vero). Cmq mi vorrei
avvicinarmi un po' di più a questo mondo e vorrei chiedere a qualche buon
anima di spiegarmi qualche centinaia di cose :-).
Scherzi a parte:
1- Qual è il miglior compilatore per C o C++ con URL
per scaricarlo (preferisco su piattaforma Windows 98).
2- C'è un sito che spiega le principali funzioni di C molto preferibilmente
in italiano?
3- Con C o C++ cosa si può creare esattamente? programmi? giochi? mah.
4- Il linguaggio di programmazione è davvero così complicato come si dice?
5- Ho avuto esperienze con il Turbo Pascal servono a qualcosa?
6- Che differenza c'è tra C e C++? Qual'è il linguaggio più semplice?
Credo di avere finito,
grazie mille,
ciaooooooo
PEX
P.S.= preferisco non comprare niente come libri o prog
lil...@g3informatica.it

 6- Che differenza c'è tra C e C++? Qual'è il linguaggio più semplice?
Come detto sopra, il C++ è molto più difficile del C. Le differenze sono
molteplici ma si può dire che il C++ contenga il C (anche se c'è qualche
difformità, come puoi leggere su un thread appena passato).
EMG

 
lil...@g3informatica.it
san Vegeta from Hell

 P.S.= preferisco non comprare niente come libri o prog
Ehhh male, ti conviene sempre comprare un libiricino, almeno sul C.
Essere programmatori C senza una sua guida, è come essere un prete senza
vangelo!
--
Fabio "C h R o N o"
UIN: 47413913
E-mail: 
fab...@puntofuturo.net
"E il maestro disse Kung. E Kung fu."

Newsgroup: it.comp.lang.c
Titolo: problemi con compilatore Dev-C++

Salve,
sto iniziando ad imparare C, uso il compilatore Dev-C++ 3.99.
Il mio problema č che dopo aver compilato quando avvio l' exe si richiude
subito e non riesco a vedere il risultato del mio programma. Che posso fare?
Grazie in anticipo
Leo

 wrote in message
news:c8kH9.34615$qF1.1...@news2.tin.it...

Gia' risposto su it.comp.programmare.win32
--
Napolux
http://ifsk.too.it
http://napolux.supereva.it
Newsgroup: it.comp.lang.c
Titolo: system("PAUSE"); -->portabile?

Sempre io...
....altro dubbio atroce...
il system("PAUSE");  è portabile ?? (almeno anche su unix?)
(vorrei saperlo tanto per non usare getch();)...
visto che ci sono chiedo un altra cosa...
...avreste un modo sempre che sia portabile almeno sotto dos e unix per
pulire lo schermo?? (che non sia una newline dentro un for).
Grazie di cuore!!!
Shad

... brutto eh? :)
Non solo č brutto, ma non risolve il problema.
La cancellazione del terminale fa sě che il cursore si posizioni in
alto, sullo schermo, la scrittura di tante linee lo fa restare in
fondo allo schermo.
-- 
Andrea Laforgia
Gioca a Tetris !
http://www.geocities.com/andrealaforgia/downloads.html

 --
Proprio quello che dicevo io: na schifezza ;-))
Andrea suggerisci niente?! :_(
Qualcosa che mi permetta di non fare chiamate di sistema (si dice cosi'
vero? :D .... cmq. niente che sia troppo complesso..)
Grazie ancora!


Qualcosa che mi permetta di non fare chiamate di sistema
Non puoi, la cancellazione del terminale č un'operazione legata al
sistema.
-- 



E allora ciccia!!!
...l'effetto pirotecnico grafico se ne va a farsi fottere (...sai che
effetto poi al prompt! ihihihih)
Grazie delle risposte!!
Shad
P.S. Se il prof. mi dice qualcosa gli porto la tua e-mail e ti perseguito a
vita se mi smentisce la cosa ;-)))
P.S.I. Grazie ancora! ;)

 pulire lo schermo?? (che non sia una newline dentro un for).
Non nello standard. Sicuramente con librerie esterne.
EMG
--
EMAG Software Homepage:     
http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: 
http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: 
http://www.emagsoftware.it/tbosg
Newsgroup: it.comp.lang.c
Titolo: Per iniziare.....

Ho qualche base scolastica in Pascal....
Sono passato al C tramite manuale e, qualcosa già resco a fare ma, ho a
disposizione il C++ builder e, per fare semplici programmini in c risulta un
po' tozzo...
Non c'è a disposizione un buon compilatore C senza troppe feature per
applicazioni Windows o roba del genere?
qualcosa anche come il vecchi Turbo pascal a cui sono affezionato....
Grazie per gli aiuti....
Stefo

 ha scritto nel messaggio
news:_9Kg8.32823$_u5.9...@news1.tin.it...

Il compilatore DJGPP  puo'  essere  scaricato gratuitamente dal sito :
http://www.delorie.com/djgpp/zip-picker.html
 Creare una directory di nome DJGPP copiarvi dentro tutti i file zippati
Usare il programma unzip32.exe per decomprimerli, sempre all' interno di
c:\DJGPP
Inserite nel file autoexec.bat le seguenti righe di codice :
set PATH=C:\DJGPP\BIN;%PATH%
set DJGPP=C:\DJGPP\DJGPP.ENV
salvare e riavviare il computer.
LCC-Win32: a free compiler system for Windows
by Jacob Navia
su :        
www.cs.virginia.edu/~lcc-win32
Lccwin32.exe, che si ottiene scompattando lccwin32.zip, e' proprio il
programma si installazione.
Dopo l'installazione, cerca WEDIT nella directory BIN; attivandolo si entra
nell'ambiente di programmazione.

 wrote in message
oMKg8.62302$v7.21...@twister1.libero.it...


>Grazie mille per l'aiuto....
Un'altra IDE alternativa all'LCC-w32 e' il Dev-C
(
http://www.bloodshed.net
).
E' forse piu' facile da usare dell'LCC-W32 perche' non assume che tu
stia per forza facendo un nuovo progetto, soprattutto agli inizi e si
basa sul MinGW (o sul Cygwin) anziche' sull'LCC (qui va' solo a
gusti).
Due consigli che non c'entrano con la programmazione in C:
- correggi il reply dei messaggi: non si fa' il reply usando "R:" ma
usando "Re:"... configura di conseguenza il Guardafuori (se non lo
supporta puoi applicare un'apposita patch che trovi sul sito della MS
se non sbaglio).
- quando quoti non aggiungere il testo quotato in coda al messaggio,
ma lascialo in testa, possibilmente tenendo solo le parti che
interessano, non tutto il testo.
Mox :)
Newsgroup: it.comp.lang.c
Titolo: Opzioni header Time-date

 
 
Utilizzo Ming con WinXp. St� utilizzando la funzioni date in time.h
 
Devo settare la lingua in italiano, perche quando faccio scrivere in
un file.txt la data: giorno, mese, anno, giorno-settimana, il giorno
della settimana, compare in inglese.
 
Googlando ho provato ad impostare nelle variabili di ambiente:
LC_ALL=ALL
LC_CTYPE=C
 
e nel file.c:
setlocale ("LC_ALL", "it_IT.UTF-8");
Ma non succede nulla! :-)
 
Sapete come settare i giorni in italiano nella funzione date?
 
Gr�zie
 
 
 
Ciao
 
 
 
 
 
 
 
 

 [...]
 
 
Ciao  Manlio

 Ciao  Manlio
 
se scrivo:
setlocale ("LC_TIME", "it_IT.UTF-8");
 
Il char *puntatore di ritorno e nullo!
 
Ciao
 
 
 
 

 
 
C'è un errore che non avevo visto, e che ho riportato facendo copia ed 
incolla.
Deve essere:
 
    setlocale(LC_TIME, "it_IT.UTF-8");
 
Il parametro `category` deve essere un intero, non una stringa.
Il tuo compilatore dovrebbe segnalare un warning, almeno.
 
Se restituisce ancora NULL, significa che il locale it_IT.UTF-8 non è 
supportato dal tuo sistema.
 
 
Ciao  Manlio
 

 supportato dal tuo sistema.
 
 
In questo modo:
char *p=setlocale(LC_TIME, "");
 
  <ed in questo modo:>
 
  char *p=setlocale(LC_ALL, "");
 
 <ed in questo modo:>
 
char *p=setlocale(LC_TIME, "it");
 
if(p!=NULL)printf("OK! NON E NULLO! %d\n",p);
*p e diverso da NULL =  4012616
 
In questo modo:
char *p=setlocale(LC_ALL, "it");
cambia il valore di *p:
*p=OK! NON E NULLO! 4012648
 
Il giorno -Saturday- della settimana per�, e in minuscolo, a differ�nza di
quando era in ENG, dove la prima lettera del giorno era Mai�scola! :-)
 
Gr�zie
 
Ciao
 
 
 

 di quando era in ENG, dove la prima lettera del giorno era Maiùscola!
 
I nomi localizzati delle settimane li decide chi sviluppa il sistema, 
seguendo le convenzioni esistenti.
Se iniziano con lettere minuscola significa che questa è la convenzione 
in uso per l'Italia.  Su GNU Linux i nomi sono in minuscolo.
 
 
 
Ciao  Manlio
Newsgroup: it.comp.lang.c
Titolo: raggruppare oggetti casualmente ma peso totale costante

Ciao a tutti.
Immaginiamo di avere un elenco di oggetti con relativo peso (ad esempio inserito in una matrice n x 2, nella prima colonna ci sono gli identificativi degli oggetti, e nella seconda il relativo peso).
Vorrei scrivere una funzione che prenda ogni volta degli oggetti a caso da questo elenco, anche in numero diverso, però il cui peso totale sia SEMPRE uguale a TOT.
 
Qualche suggerimento su come potrei impostare la cosa?
Grazie.
 


immagino che tu possa usare uno degli algoritmi che il tuo professore ha descritto in classe.
 
Ciao Jack

 
 
E' un subset sum, che come sai è uno dei 21 problemi NP completi di Karp.
 
 
Ciao!

 E' un subset sum, che come sai Ãš uno dei 21 problemi NP completi di 
Karp.
 
Senza saperne nulla ho pensato a come si potrebbe risolvere, penso che con 
una funzione ricorsiva non sarebbe difficile. Magari non sarebbe la più 
efficiente ma risolverebbe. Immagino però ci siano soluzioni più 
raffinate...
 


Sicuramente è risolvibile.  Essendo però un NP-Completo,
l'efficienza va a rotoli, garantito.  E se riesci a renderlo
efficiente sei milionario.
 
https://en.wikipedia.org/wiki/P_versus_NP_problem
 


Il problema in oggetto, che è NP-completo debole, può essere risolto in
tempo pseudo-polinomiale con una implementazione DP. Esiste anche un
algoritmo approssimato (e che quindi non trova sempre la soluzione ottima)
che corre in tempo polinomiale.
 
Il "difficile" di solito è solo riconoscere il problema: fatto questo la
letteratura in merito a questo tipo di problemi è sconfinata :)
 
 
Ciao!

 raffinate...
 
Con la ricorsione sempre occhio agli stack overflow...

 Con la ricorsione sempre occhio agli stack overflow...
 
E quando giri su stack overflow, sempre occhio alle domande sulla
ricorsione :P
 
Scusa, non ho resistito.


:-)
Newsgroup: it.comp.lang.c
Titolo: EOF

Salve.
Credo di non aver capito bene il significato di EOF...
Come mai se faccio ad esempio
int temp;
FILE *fp;
fp=fopen("FILEMIO","r");
do
fscanf(fp,"%d",&temp);
while(temp!=EOF);
anche se FILEMIO contiene diciamo 3 numeri ottengo un loop infinito?
ovvero [e questa e' la vera domanda]
posto che il test temp!=EOF non e' mai falso [ temp rimane asserito
all'ultimo valore letto]
come posso leggere l'avvenuto raggiungimento di fine file??
Con stdin, basta permere ^D e glielo dico io, ma su un file pensavo che se
ne accorgesse da solo...
Vi][oZ
-- 
Per rispondere togliere NONSCASSA da reply-to.

viv...@srvmailNONSCASSA.ing.unifi.it
 (Vi][oZ) writes:

Tu non stai affatto testando l'avvenuto raggiungimento di fine file;
devi guardare quello che ti ritorna fscanf per questo.  Leggi una
qualunque introduzione al linguaggio.
while (fscanf(fp, ...) != EOF) {
  /* Fai quello che devi fare; EOF vuol dire end-of-file o errore */
}
if (ferror(fp)) {
  perror("Read error");
}
fclose(fp);
Un consiglio: non usare fscanf, ma fgets seguito da una decodifica del
buffer.
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Univ. of Padova, Dept. of Physics - Padova, Italy            
lor...@pd.infn.it

qualunque introduzione al linguaggio.
Fatto.
quando fscanf fallisce (non legge piu' nulla) ritorna -1...
Il problema e' che ancora non ho capito se esiste qualcosa tipo l'help di
rhide o turboC o simili, che se gli dai la funzione ti fa vedere la sintassi
ecc. ecc.
Ah, io a casa uso gcc+linux liscio liscio (caro buon vecchio vi) 
Ciao ciao e grazie 


 Ah, io a casa uso gcc+linux liscio liscio (caro buon vecchio vi) 
man fscanf


 No; ritorna EOF, che e' un valore negativo implementation-dependent.
Che in Linux e' proprio -1
PunkZone:~# grep EOF /usr/include/stdio.h
#ifndef EOF
#define EOF (-1)
Ciao,
 Emanuele
--
Live free or die, UNIX trademark of BELL labs - 
http://www.bsd.org
 -
Key fingerprint = 5BE2 14E1 A532 680F 57AB  E828 BBF6 92CB BC4C 81A9

 #define EOF (-1)
No. In Linux E PER QUEL COMPILATORE e' -1.  Se non capisci la differenza,
pensaci.


 pensaci.
Penso che la quasi totalita' della gente usi gcc || egcs, io ho solo gcc
ed e' -1 e penso lo sia pure per egcs.
La differenza la capisco ;), il mio era stato un intervento solo per far
notare che in Linux e' -1, niente di flammativo.

Newsgroup: it.comp.lang.c
Titolo: Ottimizzazioni del C

Ciao a tutti,
  vorrei sapere se e' vera una cosina ...
  In C nei test si compiono delle ottimizzazioni, ad esempio
   if( 0 && <qualcosa> ) ...
   if( 1 || <qualcosa> ) ...
  Il <qualcosa> non verra' mai raggiunto, nel caso di una
espressione logica va bene ma se e' un'espressione 
questa non viene eseguita.
  Ora io vorrei sapere se e' un'ottimizzazione di alcuni
compilatori C che va' comunque abilitata o se e' un
comportamento definito a livello di standard ANSI.
 
  Grazie.
  Manuel.

comportamento definito a livello di standard ANSI.
e' stabilito cosi' dallo standard, l'operando a sinistra
dell'operatore viene completamente calcolato prima di continuare. Nel
caso di && se il risultato e' *zero* oppure per || se il risultato e'
*nonzero*, l'altro operando non viene valutato.
Gianpaolo Bottin
- Live Long and Prosper -
Newsgroup: it.comp.lang.c
Titolo: problema urgente

problema urgente!
void main() {
 bool uscita = false;
 int scelta,q;
 char dato;
 while (uscita == false)
 {
  printf(" 1 - Immetti un nuovo dato\n");
  printf(" 2 - Cancella un dato\n");
  printf(" 3 - Stampa tutte le liste\n");
  printf(" 9 - Uscita\n\n");
  printf(" Scegli -> ");    ==> se scrivo 1 e premo ok non succede niente ma
se riscrivo ancora 1 allora legge 1
  scanf("%d ", &scelta);  ==> dove sto sbagliando?
  switch (scelta) {
  case 1:
   printf("Inserisci un carattere: ");
   scanf("%c ", &dato);  ==> errore di runtime
   printf("Inserisci la lista (1-8): ");
   scanf("%d ", &q);
   Queue__Insert(dato,q);  ==> comunque questa funzione accetta un (char *i,
int q), passargli un char cosě č sbagliato?
   break;
  case 2:
   break;
p.s. io devo poi compilare il programma su linux usando il vi (sono
completamente all'oscuro di tutto) ma a casa uso il
vc++ 6. Vorrei sapere come posso usare malloc e free invece di new e delete?
Devo includere qualche file specifico?
Grazie a tutti.



int q), passargli un char cosě č sbagliato?
Queue__Insert( &dato, q ) ;
--
Andrea Laforgia (ICQ 87230455)
"A C program's trick is sometimes a C++ program's trap"
                                          [S.B.Lippman]


"Outside of a dog, a book is man's best friend.
Inside of a dog, it's too dark to read."
			-- Groucho Marx --

 Devo includere qualche file specifico?
#include <stdlib.h>
Ciao ciao,
Andrea
-- 
"...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and 
 the Ugly)."
(by Matt Welsh)
Newsgroup: it.comp.lang.c
Titolo: Un malloc che non mi torna...

Ciao a tutti...
mi è appena arrivato il libro "Algoritmi in C" di Sedgewick  nella sezione
dedicata ai BST ho però trovato alcune dichiarazioni e malloc che "non mi
tornano " tanto...
Posto il codice:
static struct node
 { int key,info; struct node *r,*l;}
static struct node *t,*head,*z;
......................
treeinitialize()
{
 z=(struct node *) malloc(sizeof  *z);
 z->l=z; z->r=z; z->info= -1;
.......etc......
}
il mio dubbio è nel malloc qui sopra... non dovrebbe essere solo:
 z=(struct node *) malloc(sizeof  z);
senza '*' ?
Sicuramente si tratta di una mia lacuna perchè la stessa allocazione viene
ripetuta anche in seguito...ma in tal modo non viene  solo allocato  un
puntatore alla struttura (e non la struttura stessa)?
Grazie 1000!
Enrico S.
--
Webmaster della Pagina NON Ufficiale del SonyCRX100
SonyCRX120,  SonyCRX140E/S, SonyCRX100EX, HP8100
HP8200, HP9100 & HP9200
http://www.freeweb.org/computer/SonyCRX100/

senza '*' ?
No.
z e' un puntatore alla struttura e la quantita' di memoria
che devi allocare e' pari alla dimensione della struttura,
ovvero e' pari alla dimensione di *z.
In ogni caso, il cast sul valore di malloc, in C, non e'
necessario ed e' sconsigliabile usarlo, visto che i
puntatori void* vengono automaticamente (a differenza del
C++) trasformati in qualunque altro tipo puntatore.
L'uso del cast puo' indebolire, come detto migliaia di volte
qua' dentro, il controllo sui tipi del linguaggio, gia'
peraltro molto debole di suo.
--
Andrea Laforgia - walkietalkie(at)
libero.it
http://www.geocities.com/AndreaLaforgia


 la malloc deve allocare lo sopazio in base alla grandezza della struttura
data, e non del puntatore.
Come sai la struttura diviene come un tipo di dato, e quindi la grandezzza
che la malloc deve allocare č la stessa corrispondente al tipo, in questo
csao alla struttura node.
 z=(struct node *) malloc(sizeof  struct node);
cosě funziona
ciao

 qua' dentro
Lo so...ma non l'ho scritto io...ma Sedgewick ^_^ Ho solo ricopiato il
codice...
Grazie 1000 per la spiegazione


 wrote in message
9nj9ai$7hp$1...@lacerta.tiscalinet.it...


cosě funziona
No, i tipi devono essere sempre racchiusi tra parentesi, se
sono argomenti di sizeof.
z = malloc(sizeof(struct node));


Ho solo ricopiato il codice...
Si', lo so.
In realta' e' una vecchia abitudine degli autori, che
conoscono il C da moltissimo tempo e che si portano dietro
questa tradizione del cast.
Dopo l'approvazione dell'ISO C, non e' piu' necessario
eseguire esplicitamente i cast (io li evito sempre).


andava bene, vero?
Certo.


questa tradizione del cast.
Aggiungo che oltre a non servire, eliminano quei pochi controlli sui
tipi che fa il C :)
Mox

Grazie di tutto!!!
Enrico S.
Newsgroup: it.comp.lang.c
Titolo: file esterni

Allora.... lo so che č una domanda scema, e mi scuso.
ma se io volessi inserire nel mio programma un programma esterno, come devo
fare???
esempio: ho vari programmi funzioni, e voglio scrivere un programma menů in
grado di richiamare ognuno di questi eseguibili.
come si fa??
ciao a tutti e grazie

 ha scritto nel messaggio
news:Z0JP7.4431$Sq4.1...@news1.tin.it...

system("filename");
oppure in modo dipendete dal sistema opertivo, che č sicuramente piů veloce.

Newsgroup: it.comp.lang.c
Titolo: esercizio spesa

Mahhhhhhh!!!!!!!
sono senza parole!!!!!
 #include <stdio.h>
     main()
          {
          int merce;
/* quantità merce*/
          double costo_unitario, spesa, spesa_tot;
           spesa_tot = 0;
           FILE *fp=fopen ("C:/WINDOWS/Desktop/spesa.txt","r");
/*aperto in sola lettura*/
           while(fscanf(fp,"%d%f",&merce,&prezzo_unit) !=EOF)
             {
             spesa = merce * costo_unitario;
             spesa_tot += spesa;
             }
            fclose(fp);
             }
perchè non fà comparire niente sul prompt di dos?
niente niente niente......
niente niente niente......
niente niente niente......
niente niente niente......
niente niente niente......
ricapitolando
dichiaro int merce; double costo_unitario, spesa, spea_tot;
inizializzo spesa_tot =0;
 FILE *fp=fopen ("C:/WINDOWS/Desktop/spesa.txt","r");   !=EOF)       /* con
questo gli dico mentre leggi dal file spesa.txt*/
 {
             spesa = merce * costo_unitario;   /* calcolami la spesa che è
data da merce * costo unitario*/
             spesa_tot += spesa;                    /* mi sommi le spese
ottenute
             }
            fclose(fp);
    }
quando compilo mi dice done fatto senza errori!!!!
quando lancio l'eseguibile da dos non accade nulla come mai
Mahhhhh senza parole
spesa.txt impostata in questo modo
5 20.40
9 115.00
7 94.00
ma niente
sono rimasto sensa idee!!!!!

              }
printf o non printf? ;)
Marcello

 perchè non fà comparire niente sul prompt di dos?
Dove gli hai detto di scrivere qualcosa sul prompt?
-- 
Gerolamo