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

Ho cominciato da pochi mesi a programmare in C in ambiente Unix. 
Oggi, scrivendo un programmino che scrive alcune righe su un file di
testo, sono incappato nel fatidico "Segmentation fault". 
Dopo aver smanettato non poco ho finalmente capito che l'errore era
dovuto al fatto che stavo usando la funzione di libreria strcmp su un
vettore di char privo del terminatore '\0'.
Un debugger mi può aiutare a trovare errori di questo genere nel codice,
invece di perdere il sonno dietro ad un laconico "Segmentation fault"?
-- 
- internet
+ cabernet

 invece di perdere il sonno dietro ad un laconico "Segmentation fault"?
Direi proprio di sģ, serve a questo d'altronde no ? Di sicuro
avrebbe detto la linea nel codice dove il tuo programma crashava.. piu
ovviamente molte altre informazioni utili

 ovviamente molte altre informazioni utili
Grazie, ora sto provando gdb, mi pare ottimo.


Phate wrote:

Si e no.
Si, perchè il debugger serve più o meno a questo.
No, perchè questo genere di errori sono una bestia subdola che se non li 
previeni li curi male.

 
Se vuoi un'  interfaccia grafica per gdb, prova ddd
http://www.gnu.org/software/ddd/
Giorgio

 
http://www.gnu.org/software/ddd/
Grazie mille, lo proverò.


Newsgroup: it.comp.lang.c
Titolo: allocazione dinamica di vettori interni a strutture

Ciao ho il seguente problema: nella creazione di un ipotetico albero
genealogico creo un BST che contenga i dati degli individui; utilizzo un
vettore di puntatori alla struttura per tenere traccia dei figli del
suddetto. Il problema è che non so apriori il numero di figli max, come
posso fare? Questa è la struttura
typedef struct bst_elem
{
 /* creo sempre dei puntatori a vettori per non definire a priori le
dimensioni
    massime del vettore in modo da ottimizzare la memoria */
 char *cognome_nome;        // vettore di caratteri (cognome e nome
dell'individuo)
 struct bst_elem **figli,   // vettore di ptr ai figli dell'individuo
                         *padrePtr, // Ptr al padre dell'individuo
                         *madrePtr, // Ptr alla madre dell'individuo
                        *leftPtr,  // Ptri ai sottoalberi sx...
                         *rightPtr; // ...e dx del BST
} BST_ELEM;
Mi funziona l'allocazione dinamica della stringa contennte cognome e nome,
ma ho problemi sull'allocazione dei figli; la compilazione avviene senza
errori, ma in esecuzione il programma si pianta. Ho usato la seguente
dicitura per allocare il vettore:
(*corrPtr)->figli = malloc(maxFigli); dove maxFigli è il numero massimo di
figli letto in un file. Chi mi aiuta? Grazie Maurizio

scusate probabilmente ho trovato il problema, avevo dimenticato di inserire
(*corrPtr)->figli = malloc(maxFigli * sizeo(BST_ELEM));
ora pare che funzioni; cmq soo ben accette altre possibili soluzioni. Grazie
maurizio

Newsgroup: it.comp.lang.c
Titolo: funzione tail ricorsiva

cosa significa che una funzione è tail ricorsiva??
(magari un esempietto)
grazie :)

 (magari un esempietto)
 
http://www.di.unito.it/~elio/prog2-D/lucidi-4.pdf
 
http://www.mokabyte.it/2003/03/ricorsione.htm
Newsgroup: it.comp.lang.c
Titolo: Cicli nei grafi

Come si fa a trovare tutti i  cicli  che partendo per esempio dal nodo A
ritornano in A in un grafo ?
Quale algoritmo si può usare?

Ciao,
a parte il fatto che sei decisamente OT e che probabilemente potresti
trovare risposte molto piu' precise ed appropriate in altri newsgroup,
ti posso suggerire di espandere il tuo grafo in un albero a partire dal nodo
che ti interessa.
Partendo dalla radice, segna quali nodi possono essere raggiunti dalla
radice e quali posso essere raggiunti dai nodi seguenti . Ripeti questo
procedimento finché non avrai coinvolto tutti i nodi raggiungibili del
grafo, quindi ancora per un livello. Il nodo radice sarà ripetuto piu' volte
indicando sull'albero i percorsi corrispondenti ai cicli.
Riz

 ha scritto nel messaggio
news:qoxj7.76825$TS4.5...@news2.tin.it...



attraversa il grafo e metti delle etichette progressive sui nodi, quando ripassi da li, hai trovato un ciclo...
bye

 ha scritto nel messaggio
news:1103_999200146@meltemi...

Newsgroup: it.comp.lang.c
Titolo: Aiuto!!!

Ciao a tutti,
ragazzi ho un problema questa è la traccia:
TRACCIA
Fornire la soluzione del problema z=A*x+y noto come Gaxpy (General A * x +
y), dove A è una
matrice di dimensione m * n, x è un vettore di dimensione n, y e z sono
vettori di dimensione m.
L'elaborato scritto consiste nella Documentazione completa (privo solo degli
elementi di
complessità e precisione) della soluzione realizzata mediante l'uso di una
unica Procedura (gaxpy)
che esegue il calcolo. È consentito, eventualmente, l'uso di una procedura
di lettura dati, che però
deve essere documentata a parte.
Non è consentito l'uso di variabili globali. È necessario l'uso corretto dei
parametri.
Questa è la mia soluzione al problema:
/* Calcolo della Procedura gaxpy */
#include <stdio.h>
int mat A [m] [n]                  /* matrice */
int vet x [n]                      /* primo vettore */
int vet y [m]                      /* secondo vettore */
int vet z [m]                      /* vettore finale */
main()
{    
int i,j;
printf ( "\n \n Caricamento della matrice \n \n" )
for (i=0; i<m; i++)
  for (j=0; j<n; j++) {
printf (" inserisci linea %d colonna val: " i,j);
scanf (" %d ", &mat A [i] [j]);
};
printf ( "/n /n caricamento del primo vettore /n /n" )
for ( j=0; j<n; j++ ){
printf (" inserisci %d " j);
scanf (" %d ", &vet x [j]);
};
printf ( "/n /n caricamento del secondo vettore /n /n" )
for ( i=0; i<m; i++ ){
printf (" inserisci %d " i);
scanf (" %d ", &vet y [i]);
};
/* calcolo della procedura */
int i,j
int risultato[m]
for ( i=0; i<m; i++ ){
   risultato [i]=0;
   for(j=0; j<n; j++){
      risultato [i]+= mat A[i][j]*vet x[j]+vet y[i];
printf (" inserisci %d " i);
scanf (" %d ", &vet z [i]);
}
Ora sarò grato a chiunque può testarmi questo programma e magari correggere nei punti dove ho sbagliato.

 int vet z [m]                      /* vettore finale */
#include <stdio.h>
#define m 10
#define n 5
int A [m] [n]                  /* matrice */
int x [n]                      /* primo vettore */
int y [m]                      /* secondo vettore */
int z [m]                      /* vettore finale */
...
Tanto per cominciare;-)
Ciao,
Cecco

Traffic Jammer wrote:

E vanno aggiunti anche i ';'... scusa, ma non ti dava per caso qualche 
errore di compilazione? ;-)
Ciao,
Cecco
Newsgroup: it.comp.lang.c
Titolo: aiuto! Richiamo programmi

Salve a tutti,
volevo chiedere se qualcuno poteva indicarmi come e' possibile
richiamare un applicazione all'interno di un programma scritto in C o C++
In particolare se devo richiamare ad esempio il programma netstat.exe con
alcuni parametri come faccio, e come faccio ad utilizzare i risultati del
programma netstat all'interno del mio programma?
grazie anticipatamente e scusatemi, se è una domanda banale almeno
indicatemi una faq o un howto.
grazie!

o C++
La funzione 'ShellExecute' dovrebbe fare al caso tuo.
Il Ghenio

 wrote in message 80hfbk$s35$1...@nslave1.tin.it...

Noto che ho risposto solo su it.comp.programmare.win32 (apparentement
la reply del dannato Outlook che uso al lavoro non gestisce i cross-post).
Comunque, per ripetere -- la soluzione piu` semplice e` popen (che
puo` essere chiamata _popen da compilatori aderenti allo standard ISO).
Alex

 puo` essere chiamata _popen da compilatori aderenti allo standard ISO).
Secondo il mio DJGPP, popen() non è standard (e _popen() non esiste
proprio). Chi sbaglia?
EMG

 proprio). Chi sbaglia?
Tutti e nessuno.  Ci sono due standard in conflitto fra loro, entrambi ISO:
Posix, che definisce popen e altre funzioni che devono venire esposte in
stdio.h; e C, che vieta a stdio.h di esportare popen o altri identificatori
che non siano in una certa lista.  L'uso di _popen invece di popen serve
per cercare di rispettare appieno lo standard C, e "quasi" quello Posix
(infatti gli identificatori che iniziano con _ sono ammessi dallo std C).
Altri compilatori ancora definiscono _popen oppure popen a seconda
delle opzioni di linea comandi utilizzate per invocarli, che permettono
a ogni compilazione di scegliere fra i due standard.
Altre funzioni "quasi standard" che hanno simili problemi includono
strdup e stricmp.  Praticamente tutti i compilatori hanno queste
funzionalita`, ma per qualche ragione lo standard del C non le
ammette, da cui il proliferaredi _strdup e _stricmp (ecc ecc) nei
compilatori in modalita` "quasi ISO-C standard".
Alex

OE è innocente, il messaggio è arrivato su più NG..
--
Diego "1985" Pettenò
per gli spammer la mail è
diego...@hotmail.com
ATTENZIONE: rispondo ai messaggi di pubblicità indesiderata
su TiscaliNet con un bel messaggio al provider di competenza!
per i messaggi seri è
diego....@tiscalinet.it
Newsgroup: it.comp.lang.c
Titolo: porta parallela2

qualcuno di voi sa come pilotare la porta parallela con il visual c++ e win
98

 win 98
Ti è già stato detto che sei OT (cioè fuori tema). Pensi che ripetendo la
domanda altre tre volte lo sarai di meno?
--
Cingar
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 ha scritto nel messaggio
news:cuaaa9$fkm$1...@news.newsland.it...

   scusa non lo sapevo non sono molto pratico di news. Cercavo solo un
aiuto.

 domanda altre tre volte lo sarai di meno?
Ammazza quanta cattiveria. Scusate se mi permetto di fare l'avv. delle
cause perse ma se gli si dava una risp chiara fin dall'inizio non avrebbe
ritentato.
--------------
Un saluto da Mazinga.


Ma gli è stata data una risposta chiara.
Anzi due: al suo primo messaggio gli è stato risposto che è fuori tema
sia qui su it.comp.lang.c, sia su it.comp.lang.c++. Nel secondo
newsgroup, gli hanno pure spiegato perché e indicato a quali altri
newsgroup è meglio rivolgersi per quesiti sulla programmazione in
Windows.
E non si trarra di essere più o meno pratici di newsgroup: se uno fa
una domanda e gli rispondono "Stai chiedendo nel posto sbagliato", non
ha senso sparare la stessa identica domanda altre tre volte. Vale tanto
sui newsgroup, quanto al telefono, quanto col telegrafo.
--
Cingar

 ha scritto nel messaggio
news:cubg05$5fg$1...@news.newsland.it...

grazie a tutti per l'interessamento.

 ha scritto nel messaggio
news:1107942989.8...@g14g2000cwa.googlegroups.com...
Ma gli  stata data una risposta chiara.
Anzi due: al suo primo messaggio gli   stato risposto che  fuori tema
sia qui su it.comp.lang.c, sia su it.comp.lang.c++. Nel secondo
newsgroup, gli hanno pure spiegato perch  e indicato a quali altri
newsgroup  meglio rivolgersi per quesiti sulla programmazione in
Windows.
E non si trarra di essere pi  o meno pratici di newsgroup: se uno fa
una domanda e gli rispondono "Stai chiedendo nel posto sbagliato", non
ha senso sparare la stessa identica domanda altre tre volte. Vale tanto
sui newsgroup, quanto al telefono, quanto col telegrafo.
--
Cingar
Volevo chiarire che lo sparo delle tre domande é stato uno sbaglio .

> grazie a tutti per l'interessamento.
Prova 
http://www.beyondlogic.org/spp/parallel.htm
.
Personalmente ho usato la guida presente sullo stesso sito per quanto
riguarda la seriale.
Il linguaggio usato è C standard...
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG
Newsgroup: it.comp.lang.c
Titolo: creare file .H

Ciao ragazzi.
Tempo addietro avevo letto un post con un esempio su come creare i file
.H, adesso non riesco a trovarlo.
Vi dispiacerebbe postarmi qualche esempio su cui basarmi.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Vi dispiacerebbe postarmi qualche esempio su cui basarmi.
I file .h sono normalissimi file di testo, che crei allo stesso modo
dei .c. Forse volevi sapere cosa devi mettere in un .h?
Nei .h in genere ci si mettono:
1) definizione delle struttire dati utilizzate (e con questo voglio
indicare anche eventuali ridefinizioni di tipo)
2) prototipi delle funzioni utilizzate
3) inclusioni di header esterni
4) istruzioni per il preprocessore di vario genere
5) dichiarazioni di variabili globali (in alcuni casi in cui vuoi che
siano viste ovunque includi il .h, senza dichiararle espressamente
extern)
Fondamentalmente nel .h NON vi devi mettere dichiarazioni di variabile
(escluso il punto 5 di cui sopra) e NON ci devi mettere codice
sorgente.
Mox :)

 Vi dispiacerebbe postarmi qualche esempio su cui basarmi.
#ifndef MY_HEADER_H
#define MY_HEADER_H
#define SOMETHINGH SOMETHINGH_ELSE
void foo(int);
double bar(int);
extern char somevar;
#endif
Tutto il file include dovrebbe  essere racchiuso come nell'esempio da un
#ifndef - #endif  in modo da evitare inclusioni  multiple. Nel blocco ci
metti i prototipi  delle funzioni che devono  essere visibili, eventuali
#define ed eventuali variabili globali.
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
Quando un uomo porta dei fiori a sua moglie senza motivo, 
un motivo c'e`.
Newsgroup: it.comp.lang.c
Titolo: Un altro metodo per utilizzare un menù di scelta

 
 
Salve
 
Conoscete un altro modo, -senza dover utilizzare librerie tipo
ncurses/pdcurses-, per creare un menů di scelta che non sia il solito:
 
while (if a!=0)
 
print("-1)scelta uno\n")
 
print("-2)scelta due\n")
 
print("-3)scelta tre\n")
 
switch ()
 
case '1' fai qualche cosa
 
case '2' .....
 
 
case '3' ....
 
 
 
Ciao
 
 
 
 
 
 
 

 ncurses/pdcurses-, per creare un menů di scelta che non sia il solito:
 
Aiuterebbe se dicessi anche che sistema operativo usi, cosa fa il 
programma e a cosa servono i menu.
 
Te lo dico perche', se si trattasse (per dirne una) di una utility a 
riga di comando sotto linux, ti consiglierei per esempio di creare 
questi menu "esternamente" tramite script shell (che poi eseguira' il 
programma con le opzioni appropriate) e non dentro il programma stesso.
Ciao.

 Ciao.
 
Ti ringrāzio
 
Si, me ne ero scordato. Windows con Mingw, oppure Djgpp.
Il programma devo solo avviare l'installazione dei programmi
per Windows.
 
Ciao
 
 

 per Windows.
 
Allora, non e' ancora chiarissimo se il tuo programma deve installare 
dei programmi, o se deve solo lanciare il setup.exe di un programma.
 
Nel primo caso ti consiglierei software gratuiti come Inno Setup o NSIS.
Nel secondo caso, sinceramente, se il programma si limitasse veramente a 
offrire solo un menu per eseguire dei setup.exe, non lo farei in C con 
input/output testuale.
 
Sotto windows lo farei in Windows Script Host (WSH) (usando 
cscript.exe), o un semplice .bat, oppure se proprio volessi usare il C, 
visto che sono in un ambiente grafico creerei una semplice GUI da usare 
col mouse, tipo colonna di bottoni con le varie scelte (MFC).
 
Se, nonostante questo, continuassi a preferire C con input/output 
testuale e libreria ncurses, posso solo consigliarti di googlare 
"ncurses alternatives" :(
 
Ciao

 col mouse, tipo colonna di bottoni con le varie scelte (MFC).
 
mi servono compilatori MS? devo imparare delle cose di MS?
 
volevo fare avere una cosa semplice, scritta in un linguaggio come C
da utilizzare da console, da command.
 
Ciao
 
 
 

 troppo semplice e troppo spartano!
 
Con printf e getchar non ottieni lo stesso look and feel? Ti consigliavo 
un linguaggio interpretato solo perche' piu' facilmente mantenibile per 
fare dei menu testuali, ma fai come ti piace ovviamente.
 
Rimanendo nel contesto C e rispondendo alla tua prima domanda, potresti 
provare a definire i menu con le azioni associate in un file xml esterno 
per dargli un minimo di estendibilita'.
 
PS. Mi sono dimenticato di chiederti perche' hai scartato inizialemente 
pdcurses.

 pdcurses.
 
perche non mi piace la logica di programmazione.
 
Ciao
Newsgroup: it.comp.lang.c
Titolo: Programmazione ad oggetti in C

Un saluto a tutto l'NG.
Ho cercato con Google qualche documento sulla programmazione ad oggetti
in C ma ho trovato solamente documenti scarni o poco inerenti (anche un
corso per imparare il C in 6 giorni :D ehm... torno serio :p).
Vorrei approfondire le mie conoscenze e l'argomento mi interessa e mi
incuriosisce: nessuno di voi ha qualche sito interessante, qualche guida
o magari anche qualche testo specifico sulla programmazione OO in C? Un
libro va benissimo...
Grazie a tutti per l'attenzione.
Nicholas Wieland
42.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

42.
Io voglio sapere la domanda, non la risposta :)
-- 
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."

 42.
Concordo che lo studio delle GTK+, sia un'ottima fonte
(tra l'altro io e un mio amico stiamo scrivendo un libro in proposito
"GTK+ Internals"), ma ho una chicca per te :
http://www.planetpdf.com/codecuts/pdfs/ooc.pdf
Buon divertimento!
-- 
{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}
SunGray aka Gabriele Lana
contact me @ sungray@tiscalinet
See you space cowboy ...

 Buon divertimento!
Yeah :D
Mox non ti dirņ mai qual'č la domanda :D
Ciao :)
Nicholas Wieland
42. (tič :D)


 Buon divertimento!
Un grazie anche da parte mia! L'argomento interessava anche me, ed era
qualche giorno che cercavo del materiale in rete, senza alcun risultato...
ma pensa un pò stà provvidenza ;-)
Ciao,
Cecco
Newsgroup: it.comp.lang.c
Titolo: acquisizione "veloce" caratteri da tastiera

Ragazzi ho bisogno di una informazione.
In questo periodo sto utilizzando il vecchio compilatore a 16 bit della
Borland (Turbo C++ 3.0). In una delle librerie incluse in queste compilatore
c'è la funzione void getch() che acquisisce un carattere da tastiera senza
effettuarne l'eco.
Se si prova a premere un qualunque tasto alfanumerico e a lasciarlo premuto
viene visualizzato dapprima il primo carattere e dopo uno slice di tempo
(detto delay) i successivi caratteri ad intervalli di tempo regolari (i
tempi di rate).
Nel DOS, con il comando MODE CON RATE=32 DELAY=1 si pongono alla massima
velocità possibile questi parametri. Via programma, invece, basta porre
nella porta 60h il valore 0h. Io ho provato, ma non sono soddisfatto dei
risultati perché noto che comunque c'è un delay iniziale (seppur minimo) e
la velocità di rate rallenta troppo i movimenti di sprite e altre immagini
sullo schermo. Penso che questo sia dovuto al tempo che perde l' INT 09h che
automaticamente viene invocata dalla tastiera alla pressione di un tasto.
Come faccio a bypassare questo problema e a rendere supersonico l'echo della
tastiera?
Avevo sinceramente pensato, via Assembly, di gestire il buffer della
tastiera manualmente, ma non credo ci sia bisogna di fare tutto questo
casino.
Che devo fare?
scheme
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 tastiera?
prova a dare questi comandi in sequenza:
#include <dos.h> /* forse e' necessario, ma non ricordo bene */
main()
{
	_AH=0x03;
	_AL=0x05;
	_BH=0x00;
	_BL=0x05;
	geninterrupt(0x16);  /* controlla quale header richiede */
}
fammi sapere se arrivi a qualche risultato, sono interessato
ciao


ha scritto:

Ho preso nota del codice ma vorrei sapere come va usato. Devo solo usarlo
cosě com'č o devo fare qualche altra cosa? (Premetto che ancora non ho avuto
modo di usarlo).


>}
così com'è. dopo la chiamata a geninterrupt() vai con il tuo codice.
devi solo controllare se l'header di geninterrupt() è dos.h, perché non 
ricordo.
ciao


Ok. Grazie, ciao.



Purtroppo la tua soluzione ha avuto gli stessi effetti del comando DOS "MODE
CON RATE=32 DELAY=1". Il rate č ancora troppo basso e quel delay iniziale
vorrei scomparisse.
Che devo fare? Devo per forza gestire manualmente il buffer circolare della
tastiera?
Aiutatemi.


 tastiera?
mi dispiace che non abbia funzionato.
hai pensato di usare delle librerie tipo ncurses?
in passato ho provato a fare qualcosa e andava benino; poi chiaramente 
dipende da cosa vuoi.
ciao

 
Se decidi di procedere in questo modo potresti postare il codice?
-- 
Devaraja (Xdevaraja87^gmail^c0mX)
Linux Registerd User #338167
http://counter.li.org


Allora:
ho risolto il problema tastiera con un file keyb.h scaricato da un sito.
Ecco l'URL:
http://xoomer.virgilio.it/afraboni/software/borlandc/keyb_h.htm

Newsgroup: it.comp.lang.c
Titolo: Macro per ricavare l'architettura su cui si compila

Ciao a tutti,
Ho un sorgente con una parte di codice per architettura a 32 bit e 
un'altra parte per architettura a 64 bit. Avrei bisogno di compilare 
solo la parte specifica ricavando il tipo di sistema in fase di 
compilazione.
Su gcc ho visto che viene definita __LP64__ se si sta compilando su 
un'architettura a 64 bit. Ma vale anche per tutti i compilatori 
standard? O esiste qualche altra macro?
Grazie


questo non lo so, ma se cerchi "numerical recipes in c" al
capitolo "less numerical algorhythms" c'è una routine
favolosa che fa una diagnosi abbastanza profonda
dell'hardware ed è pure portabile. Non sono sicuro del
riferimento biblio ma con qualche tentativo dovresti
trovare il PDF. Forse quella routine può esserti in
qualche modo utile.

 dell'hardware ed è pure portabile.
Ma quella routine restituisce valori come l'epsilon macchina, i valori 
minimi e massimi ecc. dei numeri floating point, che non hanno nulla a che 
vedere col fatto che l'architettura sia a 32 o 64 bit.
Pleg


La cosa piï¿œ sensata che mi viene in mente ï¿œ fare un test 
dell'architettura durante il processo di compilazione, schiaffare il 
risultato in un file .h (cancellato da "make clean" o simili) e usare 
quella macro per determinare se compilare a 64 bit oppure no.
Newsgroup: it.comp.lang.c
Titolo: Come scrivo printf("Content-type:%s\r\n\r\n",type) in Pascal

Salve,
Come scrivo printf("Content-type:%s\r\n\r\n",type) in Pascal ?
sto traducendo un mia libreria scritta in C nel linguaggio Pascal. VOlevo
sapere come simulare \r\n\r\n in Pascal?
Francesco
-- 
      Teaching OnLine 
Corsi online di programmazione
Php, Asp, C, C++, Visual Basic, Delphi
Linux Shell Programming
------------------------------------
http://www.teachingonline.it

 
Credo che sia cosi'...
writeln('Content-type:',type);
writeln();
Ma il pasqual non lo uso da tempo, e se posti su it.comp.lang.pascal 
ottieni di sicuro risposte migliori.
-- 
Devaraja (Xdevaraja87^gmail^c0mX)
Linux Registerd User #338167
http://counter.li.org

 writeln();
Ho provato, ma non era cosi'. Ho trovato che in Pascal al posto di \n si
scrive #10 ed al posto di \r si scrive #13, ma provando a scrivere
write('Content-type:',type);
write(#13#10#13#10);
ottengo un errore, cioe'  "Premature end of script headers: ", anche se
poi la stringa viene formata correttamente.


 
1) Se ti rispondo mi linciano perche' non ti dico che sei ot... :-)
2) Non puoi postare su it.comp.lang.pascal???
.
.
.
.
.
.
.
.
.
3) Prova write(chr(13),chr(10),chr(13),chr(10)); E mi sembra strano che 
la prima non funzioni, dato che writeln va a capo da solo.


 la prima non funzioni, dato che writeln va a capo da solo.
Anche a me sembra strano.


vieni di la


Il Fri, 09 Sep 2005 14:34:32 +0000, DevarajA ha scritto:
Ci sono riuscito, la soluzione era quella ovvia
procedure content_type(tipo:string);
begin
Writeln('Content-Type: ',tipo);
writeln;
end;
ma non ho capito perche' all'inizio non mi funzionava. Mi ha fatto
impazzire per mezza giornata, e l'ho anche provata e riprovata, questa
soluzione, che era la prima che mi e' venuta in testa.
Secondo me, l'errore che ho fatto, era di non aver ridato i permessi di
esecuzione al file eseguibile, dopo che avevo apportato delle modifiche e
ricompilato il file.

Newsgroup: it.comp.lang.c
Titolo: dubbio frivolo

Credete che ci sia qualche diferenza tra dichiarare una funzione cosě:
void foo( int n ) {}
e cosě:
void foo( n )
    int n;
{}
???

 proclamavitque:

la prima forma e` ANSI C, la seconda non so se funzioni, ma sicuramente non e`
standard. Il parametro n manca del tipo, un compilatore non abbastanza
intelligente (o forse intelligente quanto basta per non compilare prg scritti da
programmatori stupidi) potrebbe non capirlo, IMHO.
Adieu,
-- 
Lestat de Lioncourt  -- a.k.a --  Ciro Mattia Gonano
 Undergraduate student in Computer Science at University of Bologna
 IHGGer #1049   <=>  ICQ#: 52631406   <=>   URL: 
http://www.CS.UniBO.It/~gonano
 Debian admin at 
Students.CS.UniBO.It
 <=> look at headers for my JabberID & GPG

 wrote in message
b5ppal$m4q$1...@lacerta.tiscalinet.it...


Questa č una vecchia forma, ormai non dovrebbe piů essere accettata.
--
Prima ero Zero(
fiq...@tin.it
), poi Zero_su_win(stessa_mail) ed adesso sono
tornato Zero.

 --
Prima di darmi dello stupido avresti almeno potuto testarlo, visto che su
gcc 2.95 funziona.

 --
Prima di darmi dello stupido avresti almeno dovuto testarlo, visto che gcc
2.95 lo compila perfettamente.

 > > e così:


 standard. 
Una volta in un certo senso era LO standard, direi. Era l'unica forma
descritta nel KR...
Ora pero' e' obsoleta, anche se i compilatori la compilano per
compatibilita' verso i vecchi programmi.
ciao,
g.

{}
Questa è la forma PRE-ANSI, che può ancora essere supportata da
qualche compilatore, per compatibilità all'indietro, ma che deve
essere evitata, a favore della prima forma.
-- 
Andrea Laforgia
www.geocities.com/andrealaforgia
"640kb of memory should be enough for anyone." -- Bill Gates.

 
non mi sembra di averti dato dello stupido... coda di paglia?


 2.95 lo compila perfettamente.
Ripeto per la 213423 volta: il fatto che compili non significa ne che sia 
standard ne che sia corretto. Significa solo che lo standard non lo VIETA 
ESPRESSAMENTE (ammesso che il compilatore sia aderente al 100% allo 
standard a cui si fa riferimento).
Il fatto che compili puo' essere un buon test, ma da solo non significa 
nulla.
In particolare compila perche' la maggior parte dei compilatori mantiene la 
compatibilita' con il vecchio (pre-ANSI) standard C per evitare che alcuni 
vecchi programmi debbano essere riscritti (o che qualche professore impari 
almeno il C89 :P).
-- 
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."

compatibilita' con il vecchio (pre-ANSI) standard C 
Una nota: precedente a quello ANSI/ISO non esiste _alcuno_ standard
ufficiale del linguaggio C.  Le regole assunte da K&R venivano
applicate come "standard", ma non erano delle regole ufficiali.


 applicate come "standard", ma non erano delle regole ufficiali.
   Il classico "standard de facto": la Microsoft non s'e` proprio 
inventata niente... ;)
-- 
Alla prossima,
Marco
Newsgroup: it.comp.lang.c
Titolo: Funzioni e Array

Salve, sono uno studente universitario napoletano di informatica. Ho il
seguente problema da risolvere. Il prof. mi ha assegnato un algoritmo
dicendomi di utilizzare obbligatoriamente le procedure. Il problema e' che
in ingresso ci deve essere un array di 8 elementi float e in uscita un array
di 8 elementi float. Pensavo che la dichiarazione della function andava
fatta cosi':
float acq_array[8](a[8])
ma mi da una serie "interminabili" d'errori. Come devo fare per risolvere
questo problema. Si possono utilizzare (o esistono) le procedure invece che
le funzioni come per il Pascal? Ringrazio chi mi sa rispondere e spero di
essere stato chiaro.
Ciao ciao da Alberto


Una funzione *NON PUO'* restituire un'array, puoi restituire un puntatore ad
un'array, anche se imho č meglio usare un array globale...
Ciao
--
Timothy Redaelli

 un'array, anche se imho č meglio usare un array globale...
....quanto mi manca il buon vecchio pascal... cmq grazie 1000 mi 6 stato di
grande aiuto.
ciao ciao da Alberto
--
Frasier Crane: Y'know, Niles, what say I buy us dinner and a lot of
martinis?
Niles Crane: Sounds great, except for the dinner part.

grande aiuto.
A me per niente, il C e' piu' bello IMHO... anche se devo ammettere
che non e' certo un linguaggio che va bene come primo linguaggio (o
meglio, diventa complesso spiegare la programmazione strutturata se
poi uno ha sottomano il C) ma d'altronde Kernigan e Ritchie non erano
certo mangiatori di Quiche e non pensavano a queste frivolezze :)
Mox
Newsgroup: it.comp.lang.c
Titolo: array

il mio problema è che devo stampare una stringa di caratteri al rovescio
solo se il numero dei caratteri digitati è superiore al numero delle cifre.
Solo che la stringa viene stampata al contrario esclusa la prima lettera .
Come devo fare?
#include <stdio.h>
#include <string.h>
main()
int c,i,a,b;
char carattere[1000];
for(i=0;i<1000;i++)
   carattere[i]=0;
while((c=getchar()!='\n')
     if(c>=' 0' && c<=' 9')
         ++a;
     else if(c>=97 && c<=122)
            ++b;
            gets(carattere);
      if(a>b)
         for(i=strlen(carattere);i>=0;--i)
               printf("%c",carattere[i]);
               return 0;
      else
            printf("le cifre sono maggiori delle letter");
scusate ma non sono riuscita ad inserire le parentesi graffe, spero che il
listato sia chiaro.
Vi prego rispondetemi!



         for(i=strlen(carattere);i>=0;--i)


Beh, tieni presente che se una stringa è lunga 10, i caratteri
sono messi da 0 a 9, quindi dovrebbe essere sicuramente:

         for(i=strlen(carattere)
- 1;i>=0;--i)


Era questo il problema? sinceramente nel listato ci sono alcune cose
che mi hanno lasciato perplesso... probabilmente la mancaza delle graffe
l'ha reso un pò illeggibile...

 

BYEZZZZZZZZZZZZZZZZZZZZZZ


 
#include <stdio.h>
#include <string.h>
int main(void)
{
  int i = 0;
  int a = 0; // [2] Incrementare un variabile non inizializzata
             //     non e' una furbata :-)
  int b = 0; // [2]
  unsigned int strLen = 0;
  char carattere[1000] = {'\0'}; // fa lo stesso lavoro di [1]
  fgets(carattere, sizeof(carattere), stdin);  // [3] fgets e' piu'
sicuro
  strLen = strlen(carattere) -1; // L'ultimo e' il carattere '\n'
  for(i = 0; i < strLen; i++)
  {
    if((carattere[i] >= '0') && (carattere[i] <= '9'))
      a++;
    else if((carattere[i] >= 'A') && (carattere[i] <= 'z'))
	    ++b;
    // else ???
  }
  if(b > a)
  {
     for(; i >= 0; i--)
       printf("%c",carattere[i]);
     printf("\n");
  }
  else
     printf("le cifre sono maggiori delle lettere\n");
  return 0;
}
C:\>iao Angelo
P.S. per le parentesi graffe prova
     AltGr+ShiftDestro+[ per { o Alt+123
     AltGr+ShiftDestro+] per } o Alt+125
Newsgroup: it.comp.lang.c
Titolo: casuale

Ciao,
in precedenti post per effettuare una funzione casuale mi era stato detto di
utilizzare:
srand(time(NULL));
num=rand () % n;
giusto!? e la cosa funziona perfettamente...ma se questa funzione la includo
in un ciclo...il ciclo č piů veloce della variazione del time...quindi
immette sempre il solito numero!
Una soluzione (credo non molto efficace) l'ho trovata inserendo alla fine
del ciclo uno sleep(1)...ma ovviamente rende il programma un po' lentino :P
Una soluzione un pochino piů efficace?! variare time? non piů null...ma
impostando qualche altra cosa? se sě....cosa? :P
grazie
byez
B@STI

 wrote in message
news:qcBu8.21600$vF6.7...@news2.tin.it...

int num = 0;
int randRes = 0;
time_t randSeed = time(NULL);
while(condition)
{
   srand(randSeed + randRes);
   randRes = rand();
   num = randRes%n; 
}
Potrebbe funzionare. :-)
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

ok grazie! :)

 immette sempre il solito numero!
srand si usa una sola volta per inizializzare il generatore:
srand((unsigned int)time(NULL));
while(something) {
	n = rand();
	printf("%d\n", n);
}
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
K.R.O.N.O.S
Kinetic Replicant Optimized for Nocturnal Observation and Sabotage

Oppure potresti riutilizzarla ogni x volte, esempio:
int c=0;
while(condizione){
    num=rand()%n;
    if (c=m){
        srand(time(NULL));
        c=0;
    }
    c++;
    }
Cosě ottieni che ogni m volte il seme di rand viene reinizializzato.
Ciao
Claudio
Newsgroup: it.comp.lang.c
Titolo: SCUSATE LA MIA DOMANDA

Scusate la mia domanda un po' stupida ma sono proprio alle prime armi... Con
il C posso sviluppare applicazioni visuali per windows?? Posso utilizzare
Visual C++ o Borland C++ o no?? Nei libri e testi che spiegano la
programmazione in windows utilizzano il linguaggio C o C++??
Ciao e Grazie.



Sembra che Windows stesso sia stato scritto in C ( o almeno moltissime
parti di esso ) .
Se usi il C in pratica puoi scrivere applicazioni windows strutturate
mentre con il C++ puoi anche optare per applicazioni "visuali" che
fanno uso di librerie atte alle scopo .
I programmi realizzati con la tecnica "visuale" hanno il pregio di
sollevare il programmatore da tutte le implementazioni a "basso
livello" di finestre ,controlli ecct. .
Di contro hanno pero' una piu bassa velocita di esecuzione (molto
lieve in effetti) e una maggior dimensione dei programmi eseguibili
prodotti.
Inoltre all'inizio richiedono forse una maggiore complessita' di
apprendimento per chi non conosce il C++ a fondo .
Indubbiamente il piu grande vantaggio e' la produttivita' in quanto
una volta che si padroneggia la tecnica di gestione delle classi si
scrivono applicazioni windows ,anche molto sofisticate ,in brevissimo
tempo .
L'ideale sarebbe ,secondo me, di conoscere entrambe le tecniche ma non
e' un requisito obbligatorio .......... .
Infine entrambi i compilatori che hai citato permettono (credo) di
scrivere applicazioni sia in stile C procedurale che con il C++ con
classi  .
Auguri

 programmazione in windows utilizzano il linguaggio C o C++??
Puoi, puoi...
Tutto Windows e' stato scritto in C, e nei libri che trattano programmazione
in Windows si parla di C, di C++,  di Delphi (pascal rimodernato)
o Visual Basic...
Se parti da zero col C/C++ ti consiglierei il Borland C++ Builder, molto
piu' intuitivo e "visuale"... il VC++ è per chi gia' ne sa abbastanza di
programmazione sotto Windows.
E poi il BC++ Builder 3.0 è stato rilasciato "FREE" da Borland, quindi
non hai nemmeno il problema di copiarlo/comprarlo :-)
Considera anche il Visual Basic se vuoi: è molto piu' facile e rapido da
imparare e puoi ottenere programmi funzionanti molto in fretta: l'altra
faccia
della medaglia è che saranno decisamente + lenti (scordati di scrivere un
videogame in Visual Basic) e dovranno sempre portarsi dietro una DLL
runtime VB (gli eseguibili VB sono interpretati, non compilati)
Il Delphi è (molto in sintesi) l'equivalente per Windows del Turbo Pascal
di buona memoria (mi sa che non lo conosci...): molto veloce, facile da
usare e da imparare, ma un pelo meno potente del C++... l'interfaccia
utente (l'IDE) di Delphi e' molto simile a quella di BC++ Builder.


La tua domanda non č stupida...
Per programmare sotto windows puoi utilizzare qualsiasi linguaggio che
genera codice eseguibile Win32 (PE)!
Ciň che devi imparare oltre il C (o se preferisci il C++), č la
programmazione event driven.
vai a
www.programmazione.it
Newsgroup: it.comp.lang.c
Titolo: ok, è una domanda idiota...

come da soggetto, perņ mi č venuto un dubbio:
int a=5;
int b=3;
int c=a+b;
č corretto secondo lo standard C? Io C++ non avrei dubbi, perņ visto
che il C fa una netta distinzione tra definizione di variabili e
istruzioni non vorrei che potesse arrabbiarsi; il DJGPP lo compila, ma
non vorrei fosse una estensione non standard
Anto
--
Antonio Cuni, 18 anni, studente
Brainbench Certification: 
Master C++: 4.6, higher than 98% of all previous test takers.
C Language: 3.32, higher than 79% of all previous test takers.
http://www.brainbench.com/transcript.jsp?pid=1301688

Io ho un problema del genere con cose tipo
int a,b,c;
FILE *cino = fopen("input.txt", "r");
int d,e,f;
E' legale una cosa del genere?
Su tutti i compilatori su cui ho provato non vengono segnalati errori e la
cosa funziona, ma non sono sicuro che chiamare una funzione per
inizializzare una variabile sia effettivamente un'inizializzazione, e che
dopo si possano ancora dichiarare altre variabili.
Lanugo

 istruzioni non vorrei che potesse arrabbiarsi;
In che senso? La definizione di una variabile *è* un'istruzione come le
altre.
EMG

 E' legale una cosa del genere?
Si, perfettamente legale, che io sappia.
EMG

Si, perfettamente legale, che io sappia.
Con Turbo C++ (schifezza che ci hanno obbligato ad usare alla olimpiadi
d'informatica) in un caso mi segnalava un errore (purtroppo non ricordo
quale) che è sparito solo quando ho cambiato l'ordine mettendo la riga in
cui inizializzavo chiamando una funzione per ultima (senza dichiarare altre
variabili dopo). Questo conferma i miei sospetti su Turbo C++, direi.
Lanugo

altre.
no, non lo è. Infatti le variabili le devo definire *prima* di tutte
le altre istruzioni, non posso mischiarle come in C++; e visto che a+b
è a tutti gli effetti una istruzione che ritorna un valore, avevo
paura che non fosse possibile usarla per l'inizializzazione: questo
dubbio mi è venuto perchè una persona mi ha detto che su alcuni
compilatori un po' datati questo non era possibile.
anto


Newsgroup: it.comp.lang.c
Titolo: [OT?] Mouse

La posizione del mouse č scritta in memoria? Se č cosě come faccio ad
accedere a quel particolare indirizzo con un puntatore?

 accedere a quel particolare indirizzo con un puntatore?
Dipende tutto dal sistema operativo. Devi chiedere sul gruppo
appropriato.
-- 
RiK0
Non credo negli schemi non vincenti.

Devi usare delle funzioni del sistema operativo.
Quindi devi postare la richiesta sul ng che parla di C sul sistema 
operativo di cui parli...
-- 
Quando noi ignoranti eravamo di piů, tutto era piů bello (A. Celentano).
  ___   _   ___ _  _______   _______ ___
|   \ /_\ | _ \ |/ / _ ) \ / /_   _| __|
| |) / _ \|   / ' <| _ \\ V /  | | | _|
|___/_/ \_\_|_\_|\_\___/ |_|   |_| |___|
Newsgroup: it.comp.lang.c
Titolo: Dove trovare in rete...

...un bel documento (in italiano possibilmente ma va bene anche in
inglese) che spieghi come un compilatore C trasforma il linguaggio in
un file oggetto e come poi viene linkato. Magari pure con esempi da
provare. Questo mi sarebbe utile per capire bene come funziona e come
vengono trasformate le varie funzioni, strutture, variabili nel
linguaggio macchina.
Grazie
Newsgroup: it.comp.lang.c
Titolo: Come allocare tutta la memoria disponibile ?

Ciao a tutti !!!
Tempo fa avevo letto in un post qualcosa a proposito dell'utilizzo dei puntatori
huge e della funzione farmalloc per allocare piu' memoria di quanto e' permesso
fare con i puntatori normali. Purtroppo per problemi di spazio sono costretto a
conservare i vecchi post per non piu' di 10 gg. e cosi' ho perso quei
messaggi...e adesso sto nei guai con la tesi e il tempo agli sgoccioli !!!
A chiunque sara' cosi' gentile da rispondermi vorrei chiedere se esiste un modo
portabile per allocare tutta la RAM disponibile (o comunque quanta piu' RAM
possibile).
Se proprio non esiste un modo portabile, almeno in ambiente Visual C++....
Al limite se sapete di qualche tutorial in rete sull'argomento....
Grazie in anticipo a tutti voi. Ciao !!! ^_______^
--
 ... The Machman
 
 ---------------------------------
 "Questions are a burden to other, 
  answers a prison for oneself."   
 ---------------------------------
 
m.cu...@inwind.it

conservare i vecchi post per non piu' di 10 gg. e cosi' ho perso quei
www.deja.com
Oha
-- 
#include <disclaimer.h>


Potrei sbagliarmi ma mi pare che farmalloc era solo in DOS modalità reale e
serviva ad allocare
della memoria in puntatore far 32bit (comunque max 64Kb)
ciao

:
Innanzitutto grazie infinite per la risposta, a te e a GiLbI.
Anche Alex Martelli su it.comp.programmare.win32 mi ha confermato che, dal
momento che windows mette a disposizione un sistema di memoria virtuale, non e'
possibile sapere quanta della memoria allocata dalla malloc e' "fisica", e
quindi sapere se una malloc e' fallita per mancanza di RAM !
Oltretutto non poteva essere questo il mio caso, dato che dovevo semplicemente
allocare spazio per un certo numero (mai superiore a 360) di struct ciascuna
composta di due interi !!!
Il fatto e' che avevo messo un controllo sul valore di ritorno della malloc e
questa OGNI TANTO mi ritornava NULL. Era questa la cosa strana.
In realta' molto probabilmente il casino l'ho fatto io che ero convinto di avere
il Visual C++ 4.0 (32 bit) e invece ho scoperto che in realta' e' la versione
1.5 (16 bit) e io ci stavo lavorando su Win 98 !!! Che vergogna....
Sono certo che appena mettero' le mani su un compilatore a 32 bit tutto andra' a
posto.
Scusatemi se vi ho fatto perdere tempo per una sciocchezza e grazie ancora per
le vostre risposte.
Ciao !!!


 
basta usare la semplice malloc che dovrebbe essere in grado di
richiedere blocchi anche piu' grandi di 64 KB al limite virtualizzando (
dopo essere passato attraverso almeno un paio di strati del SO ) la tua
allocazione di memoria nel file di swap
comunque non potrai mai sapere a priori ed in maniera portabile quando
una malloc fallira' per mancanza di risorse

Newsgroup: it.comp.lang.c
Titolo: fwrite() impazzita??

premessa: compilatore borland c++ builder3. Ho una finestra, in cui ho
una tabella, chiamata StringGrid. Premendo su un bottone, l'utente
sceglie un file esistente sull'hard-disk (mediante OpenDialog) e il nome
e il percorso del file vengono scritti in un campo di questa tabella.
Fin qui tutto bene, funziona correttamente.
Poi ho messo un bel bottone SALVA, e premendo su esso, vengono salvati
tutti i campi
della tabella in un file binario. Il fatto e' che questo funziona bene
solo nel caso in cui non metta il percorso nei nomi dei file nella
tabella. Se ci metto un percorso tipo c:\pippo\pluto\file.xxx , premendo
sul bottone salva, ho un errore di violazione di accesso.
Ho controllato nel codice della funzione di salvataggio, e ho visto che
il problema nasce quando si arriva alla riga con scritto fwrite....
ecco il codice:
void __fastcall TArcPubb::SaveGeneralButtonClick(TObject *Sender)
{
FILE *fp;
int num_righe=StringGrid->RowCount;
archivio arc_pubb;
fp=fopen("\pubblicita\\file_pubblicitari","wb");
for(int r=1; r<num_righe; r++)
{
strcpy(arc_pubb.titolo,StringGrid->Cells[0][r].c_str());
StringGrid->Cells[1][r].c_str();
strcpy(arc_pubb.durata,StringGrid->Cells[2][r].c_str());
arc_pubb.id
=atoi(StringGrid->Cells[3][r].c_str());
fwrite(&arc_pubb,sizeof(arc_pubb),1,fp);
fseek(fp,0,SEEK_END);
}
fclose(fp);
}
dove: archivio e' una stuttura con: titolo      char[100]
                                                   nomefile char[250]
                                                   durata    char[6]
                                                    id          int
Qualche guru molto buono mi potrebbe dire dov'e' il problema??
grazie

fseek(fp,0,SEEK_END);
^^^ serve ??? il puntatore al file dovrebbe avanzare
automaticamente...

Newsgroup: it.comp.lang.c
Titolo: Come cambiare il cursore

Salve a tutti,
sperando di nn essere OT pongo questa smplc domanda:
vorrei cambiare il puntatore del mouse (cursore) nell'evento WM_LBUTTONDOWN,
per poi ripristinarlo in WM_LBUTTONUP. Quali sono le istruzioni per cambiare
il cursore?
L'ambiente è win. ed uso Dev-C++ e nel file delle risorse il cursore è come
segue:
cur-sotto CURSOR "G:/utility/Dev-C++/Esercizi/battle/img/sottomarino.cur"
Grazie,
Gilberto.

 istruzioni per cambiare il cursore?
la prima e' postare su it.comp.programmare.win32

 ha scritto nel messaggio
news:5690100.E...@iol.it...

... oppure prova con _setcursortype(_NOCURSOR oppure _NORMALCURSOR );
io uso Djgpp.
Ciao
Roberto

Newsgroup: it.comp.lang.c
Titolo: Chi mi spiega i puntatori a funzione?

Salve a tutti , qualcuno puň 
spiegare i puntatori a funzione?
e possibile assegnare ad un puntatore ad
intero :int *p, un puntatore a funzione :
int (*comp)(int,int);
ed utilizzare il puntatore *p al posto 
della funzione? e se no perchč?
Grazie a tutti ciao


Non si puo`, perche` p e` un puntatore ad int,
mentre comp e` un puntatore a funzione. Per
assegnare, devi avere due puntatori dello
stesso tipo.
-- 
Enrico `Trippo' Porreca
Newsgroup: it.comp.lang.c
Titolo: sigsev dopo chiamata a free()

Di cosa è sintomo un sigsev dopo una chiamata a free, dall'altro della
vostra esperienza? (sono sicuro di non avere deallocato 2 volte lo stesso
puntatore e non è stato chiamato con NULL come parametro).
Saluti,
Lanugo



A sensazione direi che hai sconfinato da qualche array allocato
dinamicamente. Putroppo quando questo succede si danneggiano le
strutture dati del gestore memoria e i sintomi visibili dell'errore
possono manifestarsi molto tempo dopo che e' avvenuto e in parti
di codice che non hanno colpa...
Per spiegarmi meglio e' possibilissimo che succedano cose come:
   int i;
   int *v=malloc(10); /* dimentico "*sizeof(int)" */
   for (i=0; i<10; i++)
     v[i]=i-3;
   free(v);
   ... molte istruzioni eseguite dopo ...
   int *a=malloc(10*sizeof(int)); /* stavolta ok */
   for (i=0; i<10; i++)
     a[i]=i*2;
   free(a); /* A questo punto si verifica il crash */
HTH
Andrea
--
Andrea Griffini, Programmer
http://www.netservers.com/~agriff

Grazie, controllerň.
Lanugo
Newsgroup: it.comp.lang.c
Titolo: principiante

sto annegando in un bicchiere di acqua.
ho scarico il compilatore djgpp ecc., ho studiato le istruzioni di C e C++,
ecc. ma quello che ancora non ho capito  č questo:
- dove vado a scrivere il listato, e dopo averlo scritto devo salvarlo e
come? come faccio a vedere se funziona?
insomma dove trovo qualche informazione in piů
Grazie

 Devi avere un editor di testo (va bene anche il notepad di
windows)....salvi il file con estensione .c e poi lo compili come da manuale
(cioé apri una finestrella dos e ci scrivi gcc nomedel programma.c etc..
come trovi scritto da qualche parte)....a questo punto hai un file exe...ci
biclicchi sopra et voilà...se il programmino é fatto bene partirà.....oppure
ti scarichi il rhide (forse é anche più semplice)...credo che tu lo possa
trovare sul sito di djgpp!

Newsgroup: it.comp.lang.c
Titolo: Cosa se non feof(FILE *fp) ad esempio ?

Ciao a tutti , cosa posso usare per controllare
se sono giunto alla fine di un file , no perchè mi sembra 
che la funzione feof necessiti prima di essere invocata di
operazioni di lettura o scrittura ,anche se non mi funziona 
lostesso, c'è qualcos'altro che posso usare , se qualcuno
si è fatto una funzione analoga non dico me la passi tutta,
ma almeno mi dia l'idea per farne una simile , grazie .

se sono giunto alla fine di un file , no perchè mi sembra 
forse non ho capito bene, ma feof dovrebbe essere quello che cerchi,
il file pero` deve ovviamente essere gia` aperto, ma non e` necessario
averci scritto/letto, tanto che il tipico
FILE*f=fopen("miofile")
while (!feof(f)) { ... }
e` frequente, e non funzionerebbe se feof funzionasse come dici tu.
forse il problema e` che apri un file inesistente ?
in questo caso il djgpp te lo direbbe (di solito)
[Ranger, email: 
ran...@queen.it
]
[
www.zuzzurello.com/computer/ranger
]

 ma almeno mi dia l'idea per farne una simile , grazie .
Su files _binari_, puoi calcolare la lunghezza in bytes del file
e usare un contatore:
#include <stdio.h>
FILE *fp=fopen("foo", "rb");
fpos_t len;
long c=0;
fseek(fp, 0, SEEK_END);
len=ftell(fp);
fseek(fp, 0, SEEK_SET);
while(c++ < len) {    // fpos_t e' una redefinition di long
....
}
ma non so che vantaggi ti darebbe.
CS
--
Cristiano Sadun - Software Engineering and Consulting
***********Remove NOSPAM from address to reply***********
*********************************************************
"God is Real - unless declared Integer"

ma almeno mi dia l'idea per farne una simile , grazie .
Credo che tu non abbia usato feof nel modo giusto e comunque di solito
una via alternativa e' questa
FILE *fp;
int c;
fp = fopen(.....)
while (fgetc(fp, c) != EOF) { .... }
Andrea
----------------------------------------
"Meglio cieco che negro" (Stevie Wonder)
----------------------------------------