mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c
Titolo: Utilizzo struct in un file dichiarata in un altro file

Sto utilizzando questo
typedef struct	{
			char *name;
		} DummyArchiveType;
static DummyArchiveType ArchiveType[3];
dichiarato in main.h
In main.cpp lo riempio:
void get_available_compressors ()
{
	if ( g_find_program_in_path("zip")) ArchiveType[0].name = g_strdup 
(".zip");
	if ( g_find_program_in_path("rar")) ArchiveType[1].name = g_strdup 
(".rar");
	if ( g_find_program_in_path("bzip2")) ArchiveType[2].name = g_strdup 
(".bz2");
}
La funzione la chiamo, ma quando in un altro file (callbacks.c) vado
ad utilizzare ArchiveType lo trovo vuoto. Il programma compila senza
errori ma in esecuzione la struct di sopra è vuota ! Perchè ?
callbacks.c:
#include "main.h"
void on_new1_activate (GtkMenuItem *menuitem, gpointer user_data)
{
	GtkWidget *new_archive_dialog;
	GtkWidget *hbox;
	GtkWidget *archive_types;
	int i;
	new_archive_dialog = gtk_file_chooser_dialog_new ("Create a new 
archive", GTK_WINDOW(MainWindow), GTK_FILE_CHOOSER_ACTION_SAVE, 
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_SAVE, 
GTK_RESPONSE_ACCEPT, NULL);
 
	hbox = gtk_hbox_new (FALSE, 20);
	gtk_file_chooser_set_extra_widget (GTK_FILE_CHOOSER 
(new_archive_dialog), hbox);
	gtk_box_pack_start (GTK_BOX (hbox), gtk_label_new ("Archive type:"), 
FALSE, FALSE, 0);
	archive_types = gtk_combo_box_new_text ();
 
	for (i = 0; i <= 2; i++)
		gtk_combo_box_append_text (GTK_COMBO_BOX 
(archive_types),ArchiveType[i].name);
--
Colossus
Cpsed, a Linux OpenGL 3D scene editor
http://cpsed.sourceforge.net/

Ehm, come non ho detto, ho utilizzato extern.


 dichiarato in main.h
Se includi main.h in due files a.c e b.c allora esistono due array
"static" *diversi* e indipendenti. ArchiveType di a.c non è visibile
in b.c e DummyArchiveType di b.c non è visibile in a.c.
Utilizzi questo
/* main.h */
#ifndef MAIN_H
#define MAIN_H
 typedef struct	{
 			char *name;
 		} DummyArchiveType;
 
 extern DummyArchiveType ArchiveType[3]; /* extern!!! */
#endif
/* fine main.h */
/* main.c */
#include "main.h"
DummyArchiveType ArchiveType[3]; /* definizione senza "static"*/
                                 /* e senza "extern" */
...
int main() { /* */ }
/* fine main.c */
/* callbacks.c */
#include "main.h"
/* senza definizione di ArchiveType */
/* fine callbacks.c */
-- 
Horst

Newsgroup: it.comp.lang.c
Titolo: R: real time multitasking

Ciao


wrote:

Newsgroup: it.comp.lang.c
Titolo: Opzioni compilazione....

Ci sono alcune opzioni di compilazione di cui non ho mai capito bene il
significato... ed ovviamente sto cercando qualcuno che me le spieghi... ;-)
(mi riferisco ai compilatori Borland ma penso che esistano un po' anche
negli altri prodotti)
1. "Virtual tables": cosa sono? cosa comporta settarle smart /local
/external /public o far??
2. "Calling convention": Quando e' opportuno utilizzare Pascal o Register al
posto dello standard "c" ??
3. Perche l'allineamento a word può essere piu' efficiente dell'allineamento
a byte??
4. A cosa serve potere assegnare un nome ai segmenti codice / dati ecc.??
Ciao e grazie a tutti
Andrea

4. A cosa serve potere assegnare un nome ai segmenti codice / dati ecc.??
Per avere dei riferimenti nel codice oggetto generato. (?)
Andrea Laforgia
-------------------------------------
(grattatio pallarum omnia mala fugit)

 
...e per gestire la fusione dei segmenti, di solito per allocare in aree di
memoria diverse. Il linker combina insieme tutte le sezioni con nome e
attributi uguali (read-only, exec, common). Alcuni nomi sono predefiniti e
generano immagini di memoria suddivise in dati inizializzati (data), dati
non  inizializzati (bss) e codice (text). Il file eseguibile prodotto dal
linker contiene le informazioni relative alle sezioni cosi' da permettere
al loader del sistema operativo di caricare l'applicazione in modo
corretto.
Inoltre gli indirizzi dei vari oggetti (variabili, routine, ecc.) di solito
vengono generati relativi alla base del segmento scelto (quindi la "prima
variabile" vista dal linker avra' indirizzo 0). E' il loader, o, su alcuni
sistemi, un passo successivo integrato con il linker, che si occupera' di
rilocare i riferimenti a secondo di come vengono arrangiati i segmenti
nella memoria.
Di solito si parla di "sezioni", piu' che di segmenti, in quanto il nome
segmenti e' generalmente utilizzato per riferirsi alla suddivisione in
segmenti indirizzabili separatamente, come nelle CPU Intel.

Per avere dei riferimenti nel codice oggetto generato. (?)
piu' che altro serve a poter linkare con obj creati da terze parti, in
chissa' quale linguaggio.
Se non dico una fesseria Borland e Microsoft usano nomi di alcuni segmenti
differenti.
ciao
donCiccio
P.S. x Andrea Fabbri
la prima question riguarda il C++ sara' per questo che non ti hanno
risposto?
Newsgroup: it.comp.lang.c
Titolo: Re: Aiuto con funzione

  ma non funge....come dovrei fare??
Come sono definiti L1 e L2? e L3 dov'è?

         }Nodo;
Capisco. Quello che ti serve, descritto a parole, sarebbe:
- Per ogni nodo della lista L1
    - Se il valore è pari inserisci nella lista L2
    - Altrimenti inserisci nella lista L3
Devi solo stare attento al fatto che durante l'inserimento,
modificando il valore del campo "succ" del nodo di L1 (per farlo
puntare altrove) il ciclo sulla prima lista potrebbe non funzionare
più.
Quindi salverei in una variabile temporanea il valore del prossimo
nodo da analizzare.
Qualcosa del tipo:
Nodo *p1 = L1, *q;
while (p1!=NULL) {
    q = p1->succ;
    if (p1->val%2) { p1->succ = L2; L2 = p1; }
    else { p1->succ = L3; L3 = p1; }
    p1 = q;
}
dovrebbe funzionare (anche se non l'ho provata)

Newsgroup: it.comp.lang.c
Titolo: Image Correlation

Hi!
I have to write a C algorithm to calculate Image Correlation between two 
complex images. Can you give me some advice to begin?
Thanks! !
-- 
Godai


This is an italian group. If you want answers you need to write in
italian.
Anyway: 
www.google.com
.
Ciao Jack

 Ciao Jack
Ciao Jack,
Scusami, ho commesso un errore nel postare, ho già googlato all'infinito 
ma non sembra venir fuori nulla di interessante, cmq cercherò di essere 
più preciso nel porre un'eventuale domanda sullo svolgimento del lavoro.
Grazie!
-- 
Godai


guarda opencv. E' una libreria open source della Intel.
Ciao Jack

Newsgroup: it.comp.lang.c
Titolo: Come faccio a fare un file .exe?

Uso Turbo-C: quando ho un programma con più file come faccio a ottenere un
file .exe?

Li linki (mi si passi il termine)!!! E' una delle funzioni che svolge il
tuo compilatore....leggi le istruzioni a proposito del link (io non lo
conosco granché il turbo C)

 file .exe?
Specifica tutti i nomi sulla linea di comando (o aggiungili nel progetto
se usi l'ide).
EMG
Newsgroup: it.comp.lang.c
Titolo: Buffer Overflow e C

Buongiorno a tutti,
sento sempre piu' spesso parlare di buffer overflow, buffer underun, stack
smashing, heap overflow, etc. Mi piacerebbe sapere, magari con semplici
esempi se non e' di troppo disturbo, che cosa si intende per ciascuna
categoria.
Inoltre, almeno per quanto riguarda il buffer overflow, sul quale ho trovato
parecchia documentazione non riesco a capire certe cose:
1. Se ho un array di caratteri da trattare e faccio un controllo sul numero
max dei caratteri immessi, per capirci meglio un 'if' ad esempio che fa il
controllo sul numero max del buffer che ho impostato, come e' possibile che
durante le operazioni su quella stringa il mio programma vada in buffer
overflow?
2. Se cio' succede per qualche ragione come posso assicurarmi con certezza
che un programma che ho scritto sia esente da buffer overflow o altri buchi
di sicurezza?
3. Cosa succede in generale e in effetti alla memoria quando imposto
stringa[9] e la mia scanf() non fa il controllo sulla ipotetica stringa di
15 caratteri che ho immesso?
4. Esistono trucchi collaudati o una sintassi tipo che mi permettano di
scrivere un programma con il minor numero di rischi di buffer overflow?
Grazie per l'attenzione e perdonate l'esposizione un po' confusa...

scrivere un programma con il minor numero di rischi di buffer overflow?
Beh, potresti evitare di usare funzioni intrinsecamente pericolose, come
sprint, gets, etc., e controllare sempre quello che fai. Se hai bisogno
della massima sicurezza, potresti provare a passare al C++, la cui libreria
standard, da questo punto di vista, è più sicura (es. con char * rischi dei
buffer overflow, decisamente meno con la classe string).
Lanugo
Newsgroup: it.comp.lang.c
Titolo: Problemino con allocazione dinamica di array...

Ciao a tutti,
devo ordinare gli elementi di una lista, per farlo DEVO trasferirli in un
array.
Il problema sorge qui: riesco a contare quanti sono gli elementi della
lista, ma come faccio ad allocare un vettore di dimensione pari a quella
della lista? Non posso essere "sovrabbondante" dato che la dimensione della
lista e' definita runtime e non posso stimarla a priori.
ho provato una cosa del genere:
int x = contalista(ptr);
crea_vett(x);
dove crea_vett() e'
void crea_vett(int x)
{
    int a[x];
}
ma mi da errore... credo di aver capito che per creare l'array ci voglia un
valore costante... ma come posso fare nel mio caso?
Grazie a chi mi rispondera'
--
Napolux
http://napolux.supereva.it

int x = contalista(ptr);
Non puoi dichiarare un array (che viene allocato sullo stack) con una
dimensione variabile, a meno di non essere in C99 [1].
Puoi allocarlo nello heap pero', tramite le funzioni malloc/calloc
(v.K&R per dettagli):
Array di X interi:
int * array = malloc (x * sizeof(int));
Array di X interi[2]:
int * array = calloc(x, sizeof(int));
[1]: Anche li la dimensione puo' essere variabile... ma una volta
stabilita resta quella.
[2]: la calloc rispetto alla malloc "azzera" anche la memoria (ovvero
la riempie di 0). Quindi la si evita nei casi in cui non serve lo
spazio inizializzato.
-- 
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."

 int a[x];
Visto che ogni elemento della lista è un semplice int, la precedente
diventa:
    int *a = malloc(x * sizeof(int));
Maurizio.

Newsgroup: it.comp.lang.c
Titolo: Djgpp e rhide

Ho scaricato e installato Djgpp con l'ambiente RHIDE. Nonostante abbia un
K6-III 400 Mhz con 128 Mb di Ram, trovo RHIDE un po' "ritardato". Cioč
quando clicco su un menů a tendina, impiega circa un secondo ad aprirsi...
E' abbastanza fastidioso... Qulcuno sa come rimediare?
Grazie
Vincenzo

...


Newsgroup: it.comp.lang.c
Titolo: C e C#

 c'è tra il C e il C#, grazie a chi vorrà rispondermi ;-)
Che C# e' il rimpiazzo MS di Java. Con il "C" ha poco e niente in
comune.
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

C:\>iao Angelo
e che portabilità! ieri ho fatto girare un programma per Windows CE
sul PALMARE dell'ACER (Visual Studio .net c# 2003) e lo stesso file
eseguibile partiva anche su windows senza alcuna modifica!
Ottimo!

 Ottimo!
Sai che sforzo, java lo fa da anni.

Newsgroup: it.comp.lang.c
Titolo: Controllo primo carattere

Ragazzi devo verificare se il primo carattere di una stringa  è una
lettera:
io scrivo:
if(! isalpha(p->nome))
{
  RITORNA CODICE D'ERRORE
}
Il mio compilatore mi dà un warning , infatti quando arrivo a quell'if
va in segmentazione. 
Come và scritto questo controllo  ?

Risolto : bastava mettere if (!isalpha(*(p->nome)));

 
Gia, nel primo caso passavi un puntatore a carattere, mentre isalpha() 
accetta un carattere

GeeRay ha scritto:

ad ogni modo non è possibile che il segfault fosse dovuto a quello...
e il warning sicuramente non c'entrava niente: sarà stato il warning del
cast da "char*" a "char".
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

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

ciao a tutti!.
vorrei iniziare a programmare.
avrei alcuni quesiti da chiedervi:
premetto che non so programmare neanche un po.
con cosa mi consigliate di iniziare(programma)?
avete qualche trucco del mestiere da consigliarmi sul come apprendere?
grazie a tutti


Un altro che si avventura nel mondo della programmazione dove poche persone
ne ritornano vive. (battuta).
Tutto dipende da te.
Da quello che vedo sei un autodidatta e questo può essere uno svantaggio e
un vantaggio nello stesso tempo. Vantaggio perché impari dal migliore
insegnante, ovvero te stesso, ma risulta più difficile perché non hai una
persona esperta a cui richiedere consiglio quando occorre - ovviamente ci
sono le ML e i Newsgroup atte allo scopo -.
Quello che dovresti fare è verificare i concetti che conosci d'informatica.
E' evidente che se non sai cos'è il floppy disk hai qualcosa da imparare
prima di studiare qualche linguaggio di programmazione.
Un consiglio: evita di fare il passaggio diretto a qualsiasi linguaggio
senza studiare prima qualche paradigma di programmazione e i vari concetti,
le motivazioni e le ideologie che ne hanno accompagnato la sua formulazione.
Io frequento le superiori e a mio rammarico ho imparato il modo peggiore di
procedere. Per intenderci mi ricordo ancora la prima lezione di informatica:
"accendete lo strumento. Digitate c:\tp\turbo.exe e avvierete il turbo
pascal. "
"mi scusi professore, ma io non mai utilizzato un computer e non conosco in
modo dettagliato la tastiera. Inoltre a cosa serve la direttiva da lei
scritta."
"non è compito mio insegnarvi ad utilizzare un OS o la tastiera. Quello che
voi dovete sapere è come fare applicazioni Dos e non cos'è il Dos".
Su 
www.programmazione.it
 e 
www.ldmsoft.it
 puoi trovare materiale e dispense
per newbie.
Quando avrai un po' di dimestichezza con questi concetti, a seconda del tipo
di progetto che vuoi sviluppare, sceglierai un linguaggio di programmazione
consono ai tuoi progetti.
Un altro consiglio: molta pratica e molto esercizio.
Un programmatore che espone solo concetti teorici di programmazione, per
dimostrare che sa senza averli effettivamente provati, vale come una loffa
nel vento.
Ciao.
Newsgroup: it.comp.lang.c
Titolo: Problemi con pow() - sotto LINUX (distro RH 6.1)

Salve,
sto cercando di imparare C.
Fra i programmini che sto iniziando a fare, ce n'è uno (in verità più di
uno) che mi da qualche problema.
Si tratta di un semplice programma per il calcolo delle potenze.
Inserito un intero n da tastiera, stampo una tabella del tipo:
Numero        Quadrato        Cubo        4a. potenza        5a. potenza
--------         ---------        ------        ------------        --------
----
           1                    1               1                        1
1
           2                    4                8                     16
32
           3                    9              27                     81
....
          ....                    ...            ....
.....                        ....
            n                    n^2        n^3                    n^4
n^5
Utilizzo <math.h>, scrivo nel programma il prototipo di funzione di pow():
double    pow (double x, double y);
ma il compilatore sembra non riconoscere la funzione pow().
Non sono riuscito a capire il perché.
Qualcuno può aiutarmi??
Thanks a lot....        ;o)
Bye.

 ma il compilatore sembra non riconoscere la funzione pow().
Come č stato detto su un post analogo due giorni fa, il gcc non linka
automaticamente la libreria matematica per cui devi aggiungere nella riga di
comado l'opzione
-lm
esempioě:     gcc -lm -o prova prova.c
ciao ciao
Marco
--
Marco Coppo
University Of Sheffield
FAQ di it.comp.lang.c:
http://www.programmazione.it/linguaggi/c/itcomplangc.htm

In verita' io preferisco svilupparmele da solo le funzioni, ad es. quella
dell'elevamento a potenza come in questo programma:
#include <stdio.h>
void main()
{ int n,d,e,i;
  printf("\nInserisci la base: ");
  scanf("%d",&n);
  d=n;
  printf("Inserisci l'esponente: ");
  scanf("%d",&e);
  for(i=1;i<e;i++) n*=d;
  printf("%d alla %d fa %d",d,e,n);
  getch();
}
si potrebbe cmq facilmente modificare x ottenere dei risultati multipli
corrispondenti alle n potenze come da te richiesto e poi non avresti il
problema della compilazione sotto linux.
--
davser - 
dav...@libero.it
 - 
http://davser.cjb.net

ma il compilatore sembra non riconoscere la funzione pow().
a parte il fatto che anch'io non ho capito come mai nel mio computer
di casa mi funziona ed all'universita' restituisce sempre 1, comunque
due errori che mi vengono in mente possono essere quello di passargli
degli 0 come valori o quello di compilare senza l'opzione -lm per il
link delle librerie matematiche
Aranar
e-mail: 
ro...@geocities.com
http://www.nettaxi.com/citizens/Aranar/
   (above all VgaPlanets)
http://www.tempolibero.com/user/aranar
    (sopratutto VgaPlanets)
Newsgroup: it.comp.lang.c
Titolo: l'heap???

ciao, volevo chiedervi alcuni informazioni sull'heap
1) allora ho capito ( o almeno credo) che le variabili automatiche, locali
ad una procedura hanno lo scope localizzato all'interno di un sottoprogramma
( o anche routine) e che vengono registrate all'interno del registro sp
(stack pointer) del processore, che segue la logica lifo (last in first
out); una volta usciti dal sottoprogramma, lo stack viene pulito e la
variabili automatiche sono resettate.
fin qui credo di aver capito...
2) quando faccio la malloc, alloco memoria dinamica per un puntatore, ma
quest'accidenti di memoria cosi' creata non e' nello stack ( altruimenti
verrebbe cancellata quando esco dal sottoprogramma dove faccio la malloc,
senza bisogno di fare la free), bensi' viene creata in un particolare tipo
di memoria chiamata heap!!!
domanda: ho confrontato piu' di un libro, sicuramente mi e' sfuggito
qualcosa, ma non sono riuscito a capire dove si trova fisicamente questo
heap...
non e' nel registro sp, non credo nella ram, forse e' nel disco rigido e
viene creata quando il loader carica per la prima volta il programma sul
disco???
scusate le scemenze che probabilmente ho scritto, ma due libri ho letto e
due libri mi parlano di heap senza dirmi dove accidenti e' localizzato
questo benedetto heap!!!
ciao e grazie in anticipo!!!

OT: la memoria la vedi pressapoco cosi' (per ogni processo):
+-------+
!       !
! DATI  !
!       !
+-------+
!   !   !
!   V   ! //senso di crescita dell'heap
!       !
! HEAP  !
!       !
!       !
!   A   !
!   !   ! //Senso di crescita dello stack
+-------+
!       !
! STACK !
!       !
+-------+
Una malloc pesca dall'heap. La free ritorna la memoria allo heap.
Finche' non esci dal processo lo heap non viene cancelato.
Prima di uscire dovresti fare la free (anche se molti sistemi furbi lo
fanno in automatico all'uscita, comunque non puoi contarci).
Paolo

disco???
No, l'heap e' nella RAM.
L'heap, generalmente, e' tutta quella RAM compresa tra i
dati di programma e lo stack.
Lo stack, infatti, e' posto quasi sempre alla "fine" della
memoria e cresce verso il basso.
In realta', come e' gestita e dove e' posizionata la memoria
heap di preciso e' un aspetto dipendente dal sistema.
-- 
The Follet

io sapevo che heap non e' altro che un "ammasso" (tradotto) di memoria,
ovviamente RAM
ciao
Newsgroup: it.comp.lang.c
Titolo: double[][] == double**???

non so spiegarmi... spero le righe sotto bastino
double  a[10];
double* b;
b[5] = 123456;
double    a[10][2];
double** b;????
b[5][1] = 123456;???

 double    a[4][2];
a00 a01 a02 a03 a10 a11 a12.....
se assegni b=a;
il computer non puo' sapere quanti elementi deve saltare... devi dirglielo
tu, come nell'esempio di enrico nell'altro post..
ciao
Fra

 il computer non puo' sapere quanti elementi deve saltare...
Certamente, e questo e` conseguenza del fatto che stai facendo un 
assegnamento tra tipi diversi. Non puoi fare
     b = a;
perche` b e` un puntatore a puntatore a double, mentre a e` (in questo 
contesto) un puntatore ad un array di 5 double. Tipi diversi, quindi 
niente assegnamento (o meglio, l'assegnamento provoca un risultato 
indefinito - se non ricordo male).
-- 
Enrico `Trippo' Porreca


ops! matrici e puntatori doppi non sono mai stati il mio forte..

Newsgroup: it.comp.lang.c
Titolo: Primi passi, primi dubbi...

Primo programmino in C, la classica "somma di tre numeri". Uso Dev-C++
come editor / compilatore.  Il programmino (eseguibile in command
line) funziona, tranne per un particolare che mi scoccia non poco: le
"e" accentate (�)  mi vengono riprodotte con questo carattere:  �.
Immagino si tratti  di una questione di localizzazione, e magari sto
cercando di correre prima di imparare a camminare: ma come faccio ad
ottenere le mie care "�"? 
Grazie a chi vorr� gentilmente rispondere.
Ciao
Tommaso

 
guarda il sorgente del messaggio dove dice "charset"

> Grazie a chi vorr� gentilmente rispondere.


 
figurati
buona lettura

Newsgroup: it.comp.lang.c
Titolo: come imaparare C

Ciao a tutti volendo avvicinarmi al mondo della programmazione , e sapendo
che c e c++ sono forse i linguaggi piu utilizzita, mi chiedevo se qualcuno
mi poteva consigliare dei tutorial o ltro on line per iniziare a conoscere c
o c++
accetto consiglio, ne avrņ bisogno
CRUG

 ha scritto nel messaggio
news:9ofd34$cgvfs$1...@ID-108181.news.dfncis.de...

se sai bene l'inglese sei fortunato e in rete trovi tantissimi libri e
tutorial sia sul C e C++
secondo me fai bene a comprarti un librone oppure a stamparti uno di quelli
che trovi in modo da averlo comodamente sotto da consultare
vai su 
www.google.com
 e cerca C tutorial, troverai molte cose.
alcuni libri:
thinking in C++
C ++ annotation
Newsgroup: it.comp.lang.c
Titolo: Passare una matrice a una funzione

Salve a tutti!
Come si fa coi puntatori a passare una matrice a una funzione?
Leggendo qui e lì in rete ho risolto così:
void func(int M[][5])
{
	...
}
main()
{
	int matrice[5][5];
	...
	func(matrice);
	...
}
...e funziona.
Ora:
1) io volevo passare a func un puntatore alla matrice, invece 
nell'esempio di sopra a func passo tutta la matrice, giusto? Come si fa 
coi puntatori?
2) Perchè della matrice che passo a func devo specificare solo il numero 
di colonne e non quello delle righe?
Ciao e grazie!
matteo

 di colonne e non quello delle righe?
Perché non serve sapere il numero di righe per accedere all'elemento 
[i][j] che si trova in memoria alla posizione i*N+j dove N è quello che 
tu chiami "numero di colonne". Servirebbe invece per controllare gli 
accessi fuori dalla matrice, ma questo il C non lo fa.
E.
Newsgroup: it.comp.lang.c
Titolo: procedura

Salve a tutti, è la prima volta che scrivo in questo NG.
Vorrei sapere se esiste in C un comando o una procedura per pulire
completamente lo schermo: per intenderci, l'equivalente del comando Pascal
"CLRSCR" (scusate l'esempio ma è l'unico che mi viene).
ciao e grazie
Andrea

Si chiama clrscr();
e si trova nella libreria conio.h
Ciiips
Enrico S.
--
Webmaster della Pagina NON Ufficiale del SonyCRX100
SonyCRX120,  SonyCRX140E/S, SonyCRX100EX, HP8100
HP8200, HP9100 & HP9200
http://www.freeweb.org/computer/SonyCRX100/

Andrea wrote:

Pretto dicendo che non so se il comando che sto dicendo sia C o C++ o se 
sia STANDARD comque nel compilatore della Borland C++ versione 1.0 
(dentato ora completamente FREE compresa IDE) che accetta senza problemi 
il comando clrscr(); devi incliudere i file conio.h... spero che ti 
funzioni... : )
-- 
IL RAZZIATORE,
The Only good Windows is an Unistalled Windows
-----------------------------------------------------
EMAIL: 
razzi...@usa.net
WEB:   
razziatore.dsx.org
 sito in aggiornameto/alestimento
ICQ:   67552596

Una ottima procedura portabile OVUNQUE:
# define cancella {int i; for (i = 0; i < 100; ++i) putchar ('\n')}
int main ()
{
    cancella;
    return 0;
}

 wrote in message
932vk2$lkd$1...@lacerta.tiscalinet.it...

Altrimenti, prova con (forse piu' C++):
system("cls");
Ciao ciao :-)

 # define cancella {int i; for (i = 0; i < 100; ++i) putchar ('\n')}
                                        ^^^^^^^^
Su un terminale ANSI standard (80 colonne per 24 righe), basta anche
25...
-- 
Emmanuele Bassi         |     [ 
http://digilander.iol.it/ebassi/linux/
 ]
   (Zefram)             |                     [ 
emmanue...@iol.it
 ]
                        |                 WARNING: Email Address is FAKE
GnuPG Key Fingerprint: 9747 635E B95A B0B3 4370 1CAA CAF7 512B 945C A44C



E se ho un terminale con piu' di 100 righe?
-- 
 Ciao, Bianco.
 Reply to luca.bianco (at) 
tiscalinet.it

 E se ho un terminale con piu' di 100 righe?
L'e` dura...


 system("cls");
Perche' "piu' C++"?
E poi funziona solo sotto dos, per unix-like si usa system("clear");


 L'e` dura...
Be', se consideri anche estensioni tipo il framebuffer (ci sto dando un
occhio per linux, cercando di far andare la mia vecchia S3 che non e' VESA
2.0 :-( ), puoi andare ben oltre l'80x25...


 2.0 :-( ), puoi andare ben oltre l'80x25...
Anche usando un  frame buffer non arriverai mai oltre  le 50/60 righe...
100 sono  un compromesso accettabile anche  sul framebuffer. Fosse stato
per me, avrei fatto solo 25, per i terminali ANSI standard... ;-)

Newsgroup: it.comp.lang.c
Titolo: Un compilatore??

Dove trovo un compilatore X c????
grazie!!!


Ciao!
Puoi trovare il compilatore Turbo C++ 1.0 della Borland (un po' datato
ma free :-) a questo indirizzo:
http://www.elet.polimi.it/Users/DEI/Staff/Enrico.Ronzoni/labinfo1/down
load.html
Buona giornata
C.

 grazie!!!
prego
-- 
 Ciao, Bianco.
 Reply to luca.bianco (at) 
tiscalinet.it


Cerca Cygnus, che e' il porting del GNU gcc su Windows. E' un compilatore (e
molto altro...) C e C++ potentissimo.
Edoardo

 ha scritto nel messaggio
news:8ttspk$suf$1...@fe1.cs.interbusiness.it...


>
Ma allora il cygnus-cygwin che uso cosa e'?  Al suo interno c'e' una
cartella Mingw32 che contiene anche delle librerie che mi servirebbero...ma
che non vede.
Edoardo

dove posso trovarlo? se vado sul sito di cygnus mi va su redhat...

Newsgroup: it.comp.lang.c
Titolo: Copiare (o cancellare) files in base al loro nome

Ciao a tutti.
Ho un problema e.... non sono abbastanza scafato su C per risolverlo da
solo.
L'ambiente e' Unix (AIX, per esattezza). Quello che devo fare e' entrare
su un sito FTP attraverso
una procedura in Shell e poi, una volta dentro, fare un 'ls' e vedere se
ci sono dei files con un certo insieme
di caratteri uguali, ad es. XXX. Se ci sono li devo copiare
selettivamente sul sito dal quale sono partito e, se il procedimento e'
andato a buon fine, li posso cancellare dal sito FTP.
Non so se devo in qualche modo indirizzare l'output del comando 'ls' su
un file e poi usarlo come input per poter andare a leggerene i nomi dei
files al suo interno.
Ringrazio chiunque mi sappia dare un suggerimento.
Alessandro

 ha scritto:

Se ho capito bene puoi fare una cosa cosi':
ls | grep "tua stringa" | _comando_di_copia_
Pero', devi fare in modo che ls dia un nome di file per riga, e _solo_
il nome, senza i permessi, data, dimensione... (non mi ricordo i flag
di ls ma so che si puo' fare); il funzionamento di grep mi sembra
evidente ;-) ; il comando per compiare i file deve accettare i nomi su
stdin, il che non so quanto vada bene, nel senso che cp non penso si
comporti cosi'... L'ideale sarebbe un bello script, neanche troppo
complicato, ma non so se nel tuo caso (ftp remoto) si possa fare.
--
 Ciao, Luca.
 Reply to 
luca....@tiscalinet.it

 files al suo interno.
-- 
Francesco P. Lovergine  f.lovergine AT 
iesi.ba.cnr.it
Newsgroup: it.comp.lang.c
Titolo: problemi con il C

#include <stdio.h>
void Invertivettore(int*,int);
int main(void)
{
  char nome[20]; FILE *fp1, *fp2;
  int M[50][50];
  int i,j,R,C;
  printf("\nnome del file: ");scanf("%s",nome);
  fp1=fopen(nome,"r");
  if (fp1==NULL){
    printf("file non aperto");
    return -1;
    }
  fscanf(fp1,"%d%d",&R,&C);
  for (i=0;i<R;i++){
     for (i=0;i<C;j++){
	fscanf(fp1,"%d",&M[i][j]);
	}
     }
  for (i=0;i<R;i++){
     for (j=0;j<C;j++){
	printf("%d",M[i][j]);
	}
     }
   Invertivettore(M[0],C);
   fp2=fopen("risult.txt","w");
   fprintf(fp2,"%d\n",C);
   for (i=0;i<C;i++){
      fprintf(fp2,"%d",M[0][i]);
      }
   fclose(fp1);fclose(fp2);
}
void Invertivettore(int*vett,int riemp)
{
    int i,j,temp;
    for (i=0,j=riemp-i;i<j;i++,j--){
       temp=vett[i];
       vett[i]=vett[j];
       vett[j]=temp;
       }
}
file.txt
3
3
12 23 56
45 89 23
45 78 52
risult.txt
3
56 23 12
Il programma dovrebbe caricare una matrice da file e invertire la prima
riga e scrivere il risultato in un altro file(risult.txt)
Ho provato a compilare e va bene.
In esecuzione mi dice sempre "file non aperto"

#include <stdio.h>
void Invertivettore(int*,int);


  fp1=fopen(nome,"r");



   Invertivettore(M[0],C);

   fprintf(fp2,"%d\n",C);

matrice caricata da file
3
3
15 26 89
52 23 48
45 78 56
Ho provato a compilare il programma e non funziona.
Potreste darmi una mano?

 In esecuzione mi dice sempre "file non aperto"
L'unica cosa che mi viene in mente è che il file che specifichi sulla
linea di comando non esiste. Qual'è esattamente questo nome? Prova con
file che sicuramente esistono.
EMG

 #include <stdio.h>
Sei sicuro di avere file ed eseguibile nella stessa directory?

    for (i=0,j=riemp-i;i<j;i++,j--){
Mantenendo la struttura proprio invariata (si potrebbe migliorare), è
sbagliato assegnare j=riemp-i, ma piuttosto j=riemp-1, anche se credo che
qui sia un errore di digitazione :-)


 Potreste darmi una mano?
Ringrazio tutti!!!

Newsgroup: it.comp.lang.c
Titolo: Buffer & winsock

Salve a tutti....ho iniziato lo studio delle librerie winsock da
poco,il mio problema e questo....quando utilizzo la funzione recv() il
mio programma ,se non riceve niente,si mette in attesa fino a quando
qualcosa non gli viene inviato ,esiste una funzione che permetta di
controllare il  buffer d arrivo e solo se contiene qualcosa eseguire la
recv()?
Grazie a tutti

recv()?
Sposta la recv() in un thread parallelo che chiama una funzione di
callback non appena vi sono dati.  Il funzionamento di default di
send()/recv() è bloccante; la comunicazione può anche essere resa non
bloccante, ma è più complesso controllarla.  Generalmente, il punto A
invia al punto B la dimensione dei dati trasmessi e i dati, il punto B
legge la dimensione dei dati e fa una lettura esatta per quella
dimensione.

ai ai ai...Ho capito!!Peccato che di thread ne so poco e
niente....comunque ora provero....grazie

 Grazie a tutti
select()
Ciao
M`
Newsgroup: it.comp.lang.c
Titolo: LIFO? FIFO?

Ciao a tutti... studio Ingegneria e da un po' di tempo sento il mio docente
di Informatica parlare di strutture LIFO  e FIFO.... Qualcuno saprebbe
spiegarmi in due parole (e magari con qualche esempio) di cosa parla?

Ric wrote:

LIFO: Last In First Out
FIFO: First In First Out
--
Ivan Molella
__LINUX__ the choice of the __GNU__ generation
icq# 97960484

 ha scritto nel messaggio
news:UdS36.3015$jT6.1...@twister2.tin.it...



LIFO è, ad esempio, una pila (stack) mentre FIFO, sempre ad esempio, è
una coda (queue).
EMG

... penso che se tu lo chiedessi al tuo Prof.
sarebbe felice di spiegartelo.
Ciao
Andrea.
Ric ha scritto nel messaggio ...


> >di Informatica parlare di strutture LIFO  e FIFO....
FIFO : first in first out.  Esempio di fila al cinema.
Esce quello in testa alla coda; si inserisce in coda.
LIFO : last in first out. Esempio di una pila di piatti.
L' ultimo piatto che metti è il primo ad esser tolto.
Lord Tom.

Newsgroup: it.comp.lang.c
Titolo: FAQ 6 - numero -> stringa

---------------------------------------------------------
Come faccio a convertire una variabile numerica in una stringa?
Si utilizza la funzione sprintf() definita in stdlib.h Esempi:
- sprintf(stringa,"%d",intnum) per inserire nella stringa un intero
Analogamente si può usare per tutti gli altri tipi numerici, basta cambiare
la stringa di formato(es %f per i float).
--
Marco Coppo
University Of Sheffield

Marco Coppo ha scritto:

Ma sprintf non e' definita in stdio.h?
Ivan Molella

la stringa di formato(es %f per i float).
...In dipendenza dalle piattaforme utilizzate, potrebbero anche
esserci funzioni non standard (vedi itoa(), ultoa(), ecc..)...
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
---------------------------------------------
Newsgroup: it.comp.lang.c
Titolo: URGENTE: creazione e uso di un modulo.

Ho URGENTISSIMO (entro stasera!) bisogno di levarmi il seguente
dubbio:
Allora, quando voglio creare un modulo devo creare un file .c e
l'header .h corrispondente.
ad esempio:
-file prova.c:
 #include <stdio.h>
 #include "prova.h"
  int prova(int a)
   {printf("%d",a);
   }
-file prova.h
 #ifndef _prova_h
 #define _prova_h
 int prova(int);
 #endif;
-file main.c
 #include "prova.h"
 int main()
 {prova(4);
 }
In questo modo ho creato il modulo prova. Ma quando compilo il file
main.c (cc main.c) mi dice che non è stata definita la funzione prova.
Dove sbaglio?
Grazie in anticipo a chi mi aiuterà!!!

 Grazie in anticipo a chi mi aiuterà!!!
se compili solo il main la funzione non viene trovata perche' si trova
in un modulo diverso. queste dipendenze vengono risolte dal linker. dopo
aver compilato modulo e main le fai collegare dal linker per ottenere
dai due file oggetto l' eseguibili corrispondente. 
Se usi linux e ti scrivi un Makefile del tipo
#Makefile 
CC=gcc
CFLAGS=-Wall
 
all: prog_funzionante
prog_funzionante: main.o prova.o prova.h
        $(CC) $(CFLAGS) -o main prog_funzionante main.o prova.o
main.o: main.c prova.h
        $(CC) $(CFLAGS) -c main.c
prova.o: prova.c prova.h
        $(CC) $(CFLAGS) -c prova.c
clean:
        rm *.o ; rm prog_funzionante
#fine Makefile
e poi lanci make, automaticamente ti compila e ti linka gli oggetti,
altrimenti dopo aver ottenuto i due eseguibili a mano li fai collegare
dal gcc indicandoglieli nella linea di comando ( gcc -o prog_funzionante
lista-oggetti-coinvolti )  
Per windows o altri compilatori non saprei
Ivan

Newsgroup: it.comp.lang.c
Titolo: sorgenti server telnet

Ciao a tutti,
c'è nessuno che sa indicarmi dei sorgenti di qualche telnet server per
WIN32?
Grazie
Raffaele.

 WIN32?
Spostarsi in it.comp.programmare.win32.
Grazie.
EMG

Raffaele.
Su DEV di settembre trovi un server (un esempio di server) scritto in java.

 Su DEV di settembre trovi un server (un esempio di server) scritto in java.
Grazie per l'interessamento,
mi sono dimenticato di specificare che li cercavo in C/C++.
Comunque non rispondetemi più perchè EMG ha detto che sono OFF TOPIC!!! :-\
Raffaele.
Newsgroup: it.comp.lang.c
Titolo: Come sommare unsigned char

Il mio problema č che letti un numero n di file immagine voglio avere in 
output un unico file in cui inserire la sequenza dei file letti.
Ho una struttura di questo genere
struct image{
     int dimx;
     int dimy;
     int buffersize;
     unsigned char*buffer;
     image]next;
     };
Per leggere il file immagine che mi interessa uso una funzione di questo 
tipo:
int load_file(struct image *im, char*nomefile, int colonne, int righe)
{
     FILE *fin;
     int dx, dy;
     int x, y;
     fin = fopen(nomefile,"rb");
     if  (fin==NULL)
       {
         fprintf(stderr, "File non trovato !!!");
         return -1;
       }
     dx = colonne;
     dy = righe;
     recreate_image(im,dx,dy); //alloco lo spazio per creare un'immagine 
temporanea
     for(y=0;y<dy;y++)
       for(x = 0;x < dx;x++)
              put_GL(im,x,y,getc(fin));
     return 0;
}
la funzione put_GL č cosě implementata :
in put_GL(struct image*im, int x, int y, unsigned char gl)
{
     if((x >=im->dimx) || (x < 0) || (y >= im->dimy) || (y > 0))
//controlllo che mi serve per altre funzioni
       {
              return -1;
       }
     else
       {
          im->buffer[y*im->dimx+x]=gl; //qui inserisco i grey level 
dell'immagine
          return 0;
       }
}
Ho tentato di implementare una funzione che memorizza 2 file in 1 in 
uscita ma purtroppo non funziona...qualcuno puň darmi una mano?
struct image* alloca_stack_bsq(struct image* t,int x, int y, int num_bande)
{
   unsigned char buffi[x*y*num_bande];
   int buff, cont, cont2, buffo;
   buff = x*y;
   buffo = x*y*num_bande;
   //cont2 = 0;
   //cont = cont2;
     for(cont = 0; cont < buff; cont++)
       buffi[cont] = t->buffer[cont];
     t->next = t;
       for(cont = buff+1; cont < (buff+buff); cont++)
       buffi[cont] = t->buffer[cont - buff + 1];//ho usato questo metodo 
per scrivere in coda all'immagine precedente voglio che il buffer in t 
conti da zero fino a fine immagine mentre in buffi voglio che conti 
dalla fine di quello precedente fino a fine buffer
       struct image*temp = new image;
       temp->dimy=-1;
       temp->dimx=-1;
       temp->buffersize=-1;
       temp->buffer=NULL;
       temp->next=NULL;
       temp->dimy=x;
       temp->dimx=y;
       temp->buffersize=x*y*num_bande;
       temp->buffer=new unsigned char[buffo + 1];
       for(int conta = 0; conta < buffo; conta++)
     temp->buffer[conta] = buffi[conta];
       t =temp;
       return t;
}


    ^
Cosa č in?

 Cosa č in?
Errore di scrittura č un int scusa
Newsgroup: it.comp.lang.c
Titolo: urgente :-)

stampare a video le "".
es printf("ciao "a tutti" ");
dovrei ottenere ciao "a tutti" ... ma ovviamente cosě non va :-(
come posso fare?
grazie
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 come posso fare?
Leggere il manuale ?
Oppure premettere il carattere di escape "\".
tipo
printf("Ciao \"bastardi\" carissimi\n");
ciao,
g.

 g.
č che sono andato a letto tardi...
grazie 1000
ciao


Newsgroup: it.comp.lang.c
Titolo: Una funzione che non vuole andare...

Un saluto a tutti, ho iniziato da pochi giorni a studiare il linguaggio C ed 
ho cominciato con i programmini più semplici; uno di questi non mi riesce di 
capire cosa c'ha che non funziona come dovrebbe...in poche parole  il 
problema è che non mi si visualizza sullo schermo il messaggio contenuto 
all'interno di una funzione void (di argomento void) che richiamo nella 
funzione main; il codice lo riporto qua sotto....sinceramente non ci trovo 
nulla di sbagliato...qualcuno mi può aiutare? Grazie 1000!!!!!!!!!!
Paolo
#include <stdio.h>
void stampa_commento (void);
int main (void) {
printf ("Questo lo vedo sullo schermo");
stampa_commento;
return 0;
}
void stampa_commento (void){
printf ("\nIn teoria dovrei vedere anche questo...ma non lo vedo");
}

 }
scrivi la funzione PRIMA di main e invocala con le parentesi: 
stampa_commento().
ciao.

 stampa_commento().
ops ho visto ora che hai dichiarato il prototipo della funzione, allora 
dovrebbe essere sufficiente usare le parentesi.
ciao.

 printf ("\nIn teoria dovrei vedere anche questo...ma non lo vedo");
stdout viene generalmente flushato quando arriva un terminatore di linea 
sul canale... quindi per ottenere quello che vuoi:
o scrivi printf("In teoria dovrei vedere anche questo\n");
                                                      ^^^
o scrivi printf("In teoria dovrei vedere anche questo"); fflush(stdout);
-- 
sbi

 ha scritto nel messaggio
news:deNkd.4132$n%2.3...@tornado.fastwebnet.it...

Basta che Paolo metta le parentesi e il programmino funzionerà. Quando si
esce dal main con exit o return mi pare che tutti i file aperti vengono
chiusi ( e quindi flushati ).
Ciao
Ale
Newsgroup: it.comp.lang.c
Titolo: aiuto

Cosa si intende con "%d" che ritrovo spesso nei listati?
a<b| | a<c && c<d
Se voglio dire che l'espressione è logica se è vera la condizione 3 e se è
vera la condizione 1 o la 2 perchè devo scrivere l'espressione solo così:
(a<b | | a<c) && c<d
So che è una questione di priorità di operatori ma qualcuno potrebbe
spiegarmelo meglio?
Mandatemi una e-mail
Grazie.

Usando la funzione di libreria Printf perch'č si trova spesso su bito dopo
la parentesi la seguente scritta?
printf( "\n............e poi magari alla fine mi ritrovo %d\n<<);
Sono una principiante credo si sia capito.
Mandatemi una e-mail grazie

 (a<b | | a<c) && c<d
gli operatori logici (|| e &&) hanno priorità più bassa rispetto a quelli
relazionali (== < > ecc). Tra gli operatori logici poi l'AND (&&) ha
priorità più alta rispetto all'OR (||).
Questo te lo puoi ricordare anche col fatto che l'AND si dice prodotto
logico e l'OR somma logica, hanno gli stessi rapporti di priorità di somma e
prodotto aritmetici
Understand?
ciao ciao
Marco
--
Marco Coppo
University Of Sheffield
FAQ di it.comp.lang.c:
http://www.programmazione.it/linguaggi/c/itcomplangc.htm

 printf( "\n............e poi magari alla fine mi ritrovo %d\n<<);
Hey, ma prima di postare bisognerebbe anche studiare un minimo! Il newsgroup
non č un corso di programmazione online! Prenditi un libro in biblioteca, o
leggiti le FAQs (vedi firma) e scaricati i tutorial in esse consigliati. Poi
se non capisci chiedi pure qui, perň per imparare il C, come qualunque altro
linguaggio di programmazione (soprattutto se da zero), serve un supporto
organico che ti dia una visione completa del problema e delle soluzioni.
Per quanto riguarda la tua domanda,
 \n significa: vai a capo
%d significa: qui includi un numero intero, valore della variabile
specificata dopo le virgolette chiuse.
esempio:
int var1=0;
int var2=4;
printf("\nstampa %d\nstampa%d",var1,var2);
produce:
<a capo>
stampa 0
stampa 4
comunque un mio consiglio č quello di sperimentarle le cose con il
linguaggio. ti scrivi dei programmini idioti e vedi che risultato ti danno e
da lě capisci!


 spiegarmelo meglio?
Se non metti le parentesi, avendo l'operatore && precedenza su || viene
eseguito per primo.
EMG

 printf( "\n............e poi magari alla fine mi ritrovo %d\n<<);
E' la sintassi dello specificatore di formato. In particolare \n
significa andare a capo.
EMG
Newsgroup: it.comp.lang.c
Titolo: Borland C++ 3.1 e gli overlay

Vorrei sviluppare qualcosa con gli overlay e il BC++ 3.1.
Qualcuno ha gia' fatto qualcosa?
Se si' sarebbe cosi' gentile da spiegarmi come ha fatto a generare gli overlay
e a usarli?
Grazie anticipatamente
Cordialmente.
	Mauro

e a usarli?
Nel progetto devi definire ogni file come (O)verlay, almeno quelli con piu'
dati, inoltre nelle opzioni di chiamata devi definire (O)verlay.
Per non sbagliarti usa il modello huge (tutte le chiamate devono essere far,
per gli overlay).
Comunque gira per i settaggi del compilatore e del linker e qualcosa lo
trovi.
O senno' a meta' del manuale c'e' tutta la proedura da seguire.
Solo che, ti ripeto, secondo me non funzionano un granche'. Se non hai
memoria il programma non ti parte anche se swappi l'overlay sulla memoria
estesa. Poi se usi l'assembler puoi avere qualche problemino coi parametri.
Se vuoi un consiglio scaricati il djgpp e con quello non hai bisgno degli
overlay. In piu' ti ricompila (quasi) tutto il codice scritto per BC++.
Marco

Newsgroup: it.comp.lang.c
Titolo: istruzioni "rotate right" e "rotate left"

ciao a tutti,
esiste in C l'equivalente di ROR e ROL dell'assembler?
oppure l'unico modo è quello di salvarsi il bit che sparisce e ORarlo dopo
lo shift dalla parte opposta?

 lo shift dalla parte opposta?
si, devi usare le operazioni disponibili. E a scanso di problemi,
meglio usare variabili intere di tipo unsigned.
ciao,
g.

 lo shift dalla parte opposta?
Di solito sono comode delle macro funzionali. Esempio per interi non
segnati a 32 bit:
#define ROL(x,n) ( ((x) << (n)) | ((x) >> (32-n)) )
#define ROR(x,n) ( ((x) >> (n)) | ((x) << (32-n)) )
Ci sono degli inconvenienti: attenzione a non passare valori soggetti a
"side effects". Inoltre, si possono presentare problemi per n > 31.
Ciao.

 "side effects".
Il C99 ci ha fornito le funzioni inline ;) Il compilatore dovrebbe
produrre lo stesso codice, ed hai il vantaggio della una semantica di
una chiamata a funzione.
Luca
-- 
Home: 
http://kronoz.cjb.net
"La donna ideale deve soddisfare l'anima, lo spirito, i sensi.
 Non trovando riuniti i tre requisiti nella stessa persona, ?
 consentito il frazionamento." -- Alessandro Morandotti
Newsgroup: it.comp.lang.c
Titolo: Come diamine si usa realloc?

Salve a tutti! Ho un grosso dubbio: non so mai come utilizzare la realloc,
non so perche dite di non usarla, e non so perche se la uso io dopo una
decina di volte che la uso (non la prima volta... va a capire?!) si pianta!
Io uso questo metodo:
char *buf = malloc(128);
// se ora voglio farlo diventare a 256 caratteri
buf = realloc(buf, 256);
Ma se voglio usare una struttura? Perche tutti utilizzano un byte in piu
nella riallocazione? Di questo argomento non ci ho capito granche!
Grazie in anticipo,
Dome

Perche tutti utilizzano un byte in piu nella riallocazione?
Tutti chi ? Puoi fare qualche esempio ?
Riguardo al tuo programma che non funziona sarebbe utile
vedere un esempio.
Andrea
--
Andrea Griffini, Programmer
http://www.netservers.com/~agriff

L'esempio che mi viene subito in mente è quello di BarningaZ nel suo TrickyC
che, in un programma in cui si riceveva in input un numero indefinito di
int, se ne faceva la somma. Lui utilizzava la realloc, e allocava mi pare un
numero di int pari al numero di int immessi fino a quel momento + 1 (o 2,
non ricordo bene).
Dome

 Et voila' ... non so piu' dove sono i miei dati.
Quindi sarebbe meglio chiamare malloc per ottenere una nuova area di
memoria, copiarci il contenuto di quella vecchia e liberare la prima
area, giusto?
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
La teoria e` quando sappiamo come funzionano le cose ma non funzionano.
La pratica e` quando le cose funzionano ma non sappiamo perche`.
Abbiamo unito la teoria e la pratica: le cose non funzionano piu` e non
sappiamo il perche`.

area, giusto?
No... basta che fai qualcosa del tipo
  if ((new_ptr = realloc(ptr,new_size))!=NULL)
  {
    /* riallocazione riuscita */
    ptr=new_ptr;
  }
  else
  {
    /* allocazione fallita... ma ptr e' buono */
  }
Io personalmente non sono comunque un grande tifoso di realloc...


buf = realloc(buf, 256);
Mai fare cosi'.
Usa due puntatori distinti per il vecchio e il nuovo puntatore.
new_buf = realloc( old_buf, 256 ) ;
visto che old_buf rimane invariato, anche se new_buf e' NULL.
--
Andrea Laforgia - walkietalkie(at)
libero.it
#exclude <windows.h>
Newsgroup: it.comp.lang.c
Titolo: [OTTISSIMO]LEGGETE!

Ciao a tutti,
ieri sera ho visto un servizio alle Iene che trattava di un decreto legge
proposto dal ministro Matteoli. In tale decreto, sarò breve, si diceva che
ogni Comune poteva acquistare delle spiagge per poi rivenderle a private
affinchè loro potessero costruirci sopra o farne quello che volevano. Beh,
io, come alcuni di questo ng, sono siciliano e non vorrei per niente al
mondo privarmi delle belle spiagge presenti sulla mia regione per far posto
a  mega-villa costruite su uno spazio che è di tutti. E' vero che questo
decerto verrà cancellato, ma quando?
Un' altra questione che mi ha dato molto fastidio è: perchè modificare
l'art.18????
A me non suona tanto bene e onestamente mi farebbe comodo solo se fossi un
ricco imprenditore.
Io non sono un idealista e non sono di sinistra (ma nemmeno di destra), però
queste cose mi suonano male!
Scusate lo sfogo. Se solo male informato in merito a ciò di cui ho discusso
vi prego di scusarmi e di dirmi dove ho commesso l'errore.
Ciao

> vi prego di scusarmi e di dirmi dove ho commesso l'errore.
hai sbagliato newsgroup,
il tuo abuse ti speghera' meglio il concetto di topic.

 wrote in message
a3dhv9$84h$1...@serverlinux.frigoveneta.interno...


 impara a leggere!
peccato che il tag al massimo e' [OT]
peccato che l' "R:" del tuo mailreader non e' RFC compliant
peccato che non sai quotare
-- 
Marco

 peccato che l' "R:" del tuo mailreader non e' RFC compliant
Giusto per correttezza/completezza... dai un occhio a:
http://groups.google.com/groups?hl=it&selm=HNLL7.1086%24we5.790%40nreader2.k
pnqwest.net
e seguenti.
--
Gerolamo

 e seguenti.
Ok, diciamo che non e' RFC accondiscendente.
-- 
Marco