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

Sto realizzando un programma per controllare la validità dei
collegamenti di un sito web che vive sotto un sistema Unix: non so come
controllare quei pochi ma comunque presenti collegamenti esterni.
Qualcuno conosce quali librerie e funzioni devo utilizzare
(possibilmente dove trovare una documentazione adeguata), ho già cercato
inutilmente sulla rete.
Grazie in anticipo

On Tue, 20 Oct 1998 22:47:56 +0200 Alessio wrote:
: Sto realizzando un programma per controllare la validità dei

Devi utilizzare il servizio di echo del protocollo ICMP (detto in parole
povere, ping). Ti conviene prelevare da qualche parte il codice sorgente
e adattarlo alle tue esigenze; ci sono alcune funzioni che puoi eliminare,
ad es, quella che stampa su stdout i risultati mano a manu che arrivano
le risposte ai ping. Generalmente, poi, la routine principale prevede un
ciclo infinito da cui si esce con un SIGINT (a meno che non si passino
parametri da linea di comando): anche su questo devi lavorare un po'.
Dai anche un occhiata al funzionamento dell' ICMP, o almeno ai servizi di
eco e risposta all'eco.
-- 
-------------------------------------------------------------------
     Roberto Tagliarino
 
roberto.t...@multiwire.net
-------------------------------------------------------------------

 Grazie in anticipo
Se ho capito bene ti serve un validatore di link ricorsivo ovvero
che attraversa tutto il tuo web e stabilisce se i link corrispondenti
puntano a pagine esistenti o meno. 
Per quello ci sono gia' dei motori di ricerca in perl che fanno tutto,mi
sembra fuori luogo riscoprire l'acqua calda. Per esempio il buon vecchio
MOMspider.
-- 
Francesco P. Lovergine  
f.lov...@iesi.ba.cnr.it
CNR-IESI                
http://www.iesi.ba.cnr.it
V.Amendola 166/5
I-70126
BARI BA (ITALY)

 povere, ping). Ti conviene prelevare da qualche parte il codice sorgente
Utilizzando ICMP si testa solo che l'host sia online. La cosa che reputo 
migliore è utilizzare il metodo HEAD o il metodo GET del protocollo HTTP 
e controllare il codice di errore nella risposta del server.
-- 
Roberto Lupi
Undergraduate Electronic Engineering Student, University of Ancona, Italy
UNIX System Administrator
Windows and Linux Developer
Finger me for my PGP key

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

Salve,
sono un principiante, ma voglio addentrarmi ugualmente nel mondo della
programmazione c/c++.. A questo proposito ho preso un libro della
mcgraw-hill; visual c++ 6: la guida completa[titolo originale visual c++6:
the complete reference di Chris Pappas e William Murray]; innanzitutto
vorrei sapere se qualcuno lo conosce e se può darmi dei pareri riguardo a
questo testo. In secondo luogo vorrei sapere se i programmi scritti
all'interno del libro possono essere trovati da qualche parte già fatti
nella rete, visto che non c'era un cd-rom in dotazione. CiAo e vi ringrazio
anticipatamente per l'aiuto!
ps: dimenticavo, vi sarei grato se mi segnalaste anche qualche buona
guida[preferibilmente in italiano, ma anche in inglese] per c/c++
scaricabile dalla rete!

 ha scritto nel messaggio
news:ayQ8MPS3$GA....@news1.galactica.it...

Newsgroup: it.comp.lang.c
Titolo: Dubbi POINTERS and STRINGS

Grazie ad aiuti di ian Coog sono riuscito a completare questo c*** di
programma, rimane un unico problema: non riesco a gestire il caso in
cui la stringa che deve essere confrontata non sia alla fine della
stringa sorgente...cioč funziona solo se la stringa di occorrenza č
come ultima posizione nella stringa sorgente.
Se qualcuno ha testa mi dia una mano
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define true 1
#define false 0
typedef int bool;
int z;
char *sottostringa (char *p, char *s);
bool SostPrimaOcc (char *vecchia, char *nuova, char *sorg, char
*dest);
/*
char *sottostringa (char *p, char *s)
cerca da sinistra la prima occorrenza della stringa puntata da p nella
stringa 
puntata da s; nel caso in cui la trovi restituisce il puntatore
all'inzio della 
sua prima occorrenza in s; restituisce NULL se p non occorre in s.
*/
char *sottostringa (char *p, char *s)
{
  char *a, *b;
  int c;
  for(c=0;p[c];c++)
  {
   a = &p[c];
   b = s;
 
   while(*b && *b == *a)
   {
    a++;
    b++;
   }
   if(!*b)
    {
    z = c;
    return a;
    }
  }
  return NULL;   
}
/*
bool SostPrimaOcc (char* vecchia, char* nuova, char* sorg, char* dest)
effettua una copia di sorg (la sorgente) in dest (destinazione)
rimpiazzando 
l'eventuale prima occorrenza di vecchia con un'occorrenza di nuova; in
caso non 
vi siano occorrenze di vecchia in sorg, dest deve essere una copia di
sorg. 
Es. se vecchia == "rossa", nuova == "gialla", sorg == "la casa rossa"
allora, 
dopo l'esecuzione, dest == "la casa gialla". Restituisce VERO o FALSO
a seconda 
che abbia effettuato la sostituzione o no.
*/
bool SostPrimaOcc (char *vecchia, char *nuova, char *sorg, char *dest)
{
  int m,n;
  n=0;
 
  dest= sorg;
 
  if (sottostringa(sorg,vecchia) != NULL)
   {
     while(z<40)
     {
       dest[z] = *nuova;
       nuova++;
       z++;
     }
     printf("\n\nrisultato\n");
     for(n=0;n<20;n++)
     {
      putchar(dest[n]);
     }
     return true;
   }
   else
   {
     printf("\n\nrisultato\n");
     for(n=0;n<20;n++)
     {
      putchar(dest[n]);
     }
     return false;
    }  
}
int main(void)
{ 
  char s1[80], s2[80], s3[80], s4[80];
  char *b1, *b2, *n1, *v1; 
  int i=0;
  bool ris;
 
  printf("inserisci stringa sorgente \n");
  gets(s1);
  printf("inserisci vecchia occorenza \n");
  gets(s3);
  printf("inserisci nuova occorenza \n");
  gets(s4);
 
 
  b1 = s1;
  v1 = s3;
  n1 = s4;
  ris = SostPrimaOcc(v1,n1,b1,b2);
  if(ris == 1)
  {
   printf("\nSostituzione effettuata? True");
  }
  else
  {
   printf("\nSostituzione effettuata? False");
  } 
  getch();
  return 0;

   getch();
Forse e' meglio usare getc() o getchar().
Insomma, credo che ci sia qualcosetta da rivedere.
Ciao,
Ema

GRazie EMA ci lavoro su poi ti ri-posto
ciao
Ork

     }
non li stai applicando, stai ancora utilizzando il tuo vecchio e bacato
sorgente. Seriamente, dai una ripassata al K&R.
-- 
-=[]=---iAN CooG---=[]=-
RAM DISK is NOT an installation procedure!
Newsgroup: it.comp.lang.c
Titolo: comunicazione via internet sotto windows

Vorrei scrivere un programmino in consol mode col visual C++ per fare
una specie di telnet, o ftp, con le api di windows (no mfc).
quali sono le api da chiamare ?
--
[ranger, email: 
ran...@queen.it
]
ICQ# 6585343
http://members.tripod.com/%7Eranger_rg/

 quali sono le api da chiamare ?
Winsock 
-- 
// ------------------------------------------------------------
// Antonello Salvatucci
// Software Developer, Technical Writer
// LEGO A/S SPU-Darwin, Kloevermarken 120, 7190 Billund DENMARK
// 
// 
+45 75 33 22 33 ext. 5186
 
anto...@digi.lego.com

quali sono le api da chiamare ?
Windows Socket (includi winsock.h e linka assieme wsock32.lib): quasi
esattamente uguali a unix, tranne che sui socket non puoi usare read e
write (come se fossero file handle) ma solo send e recv.
Fabio Forno
  "Vi aspetta l'esplorazione delle ignote 
  possibilita' dell'esistenza" 
  - Q in "All Good Things..."
=============================================
scia...@inorbit.com
http://members.sektor9.com/sector1/~sciasbat/
=============================================

quali sono le api da chiamare ?



DJGPP, ha anche il compilatore C++
Trovi tutto quello che ti serve qui: 
http://www.delorie.com
___
Fabio Forno
  "Vi aspetta l'esplorazione delle ignote 
  possibilita' dell'esistenza" 
  - Q in "All Good Things..."
=============================================
scia...@inorbit.com
http://rampage.ml.org/sector1/~sciasbat/
=============================================

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

Salve a tutti,
sapreste indicarmi qualche sito dove trovare esempi di programmazione con i
thread?
Grazie

 ha scritto nel messaggio
news:f2tub.39933$9_.15...@news1.tin.it...

Prova a cercare "gapil", guida alla programmazione in linux, su google...
Ciao ciao
Davide


Se sei interessato ai thread POSIX, IBM developerworks ha un ottimo tutorial
in 3 parti:
http://www-106.ibm.com/developerworks/library/l-posix1/
http://www-106.ibm.com/developerworks/library/l-posix2/
http://www-106.ibm.com/developerworks/library/l-posix3/
HTH,
Marco

Newsgroup: it.comp.lang.c
Titolo: [OT]Secondo voi

Salve a tutti ,  secondo voi questi corsi in e-learning
costano troppo?
Programmare in HTML : £.450.000
Scrivere per il Web : £.450.000
Professione Web designer : £.450.000
Net Surfer : £. 450.000
Grazie a tutti
Ciao

Net Surfer : £. 450.000
   ... ma questo!!! :-)))
-- 
Totuccio.

 Net Surfer : £. 450.000
(!) uhm, ho deciso, smetto di studiare e mi metto ad insegnare...... ghghgh

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

 indicata e di 7,5 ore , i prezzi sono quelli che avevo riportato.
Nome del sito?
Newsgroup: it.comp.lang.c
Titolo: [Domanda stupida] Confrontare 2 stringhe...

Salve a tutti
So che è un quesito elementare, ma non riesco a capire la spiegazione della
guida e neppure del libro che ho....
Io devo confrontare due stringhe, a[] e b[].
Ho provato con strcmp(a,b) ma non capisco come utilizzare il risultato....
Ecco il mio caso:
char a[]="Pippo";
char b[]="";
do{
        printf("Inserire la stringa: ");
        gets(b);
        i = strcmp(a,b);
     }while(i!=0);
...con questo vorrei dire che se le due stringhe sono diverse deve ripetere
il ciclo.....ma non funziona....cosa sbaglio? Come si usa strcmp?
Grazie a tutti
Ciao

      }while(i!=0);
non hai allocato memoria per b. o meglio, ne hai allocata troppa poca
(ci sta giusto un char cosi')
potresti dichiarare b così
char b[6];
oppure allocare dinamicamente la memoria.
char *b;
b=(char*)malloc(sizeof(char)*6)
ricorda che la comparazione sara' case sensitive, ed evita di usare gets,
e' sconsigliato. (rischi di scrivere oltre la zona di memoria che hai
allocato, se ricevi troppi dati. usa fgets al suo posto)
Ciao,
Riccardo

 Riccardo
Ciao


Non e' una bella soluzione, soprattutto perche' non ti permette di 
capire l'errore commesso.
Marcello

 capire l'errore commesso.
In che senso?
Ho capito che se dichiaro una stringa b[]=""; quella stringa sarà lunga 0 e
che col gets corromperebbe punti di memoria che potrebbero già essere
assegnati....
E' giusto? O dovrei capire altro? Grazie a tutti

 assegnati....
Piu' che alla dichiarazione di una stringa mi riferivo alla gestione 
della memoria.
Inoltre ti era stato giustamente consigliato di usare fgets.
Scanf... Se la conosci la eviti... ;)
Marcello
Newsgroup: it.comp.lang.c
Titolo: grafica

salve NG,
ho bisogno di un favore, ho fatto un programmino che dovrebbe disegnare una
linea, e dico dovrebbe perchè fino al momento della compilazione tutto a
posto, quando lo eseguo però mi compare il messaggio di errore:
Error: can't open display.
Non credo che sia un errore nel programma
# include "graphics.h"
int main()
{
 InitGraphics();
 MovePen(0,0);
 DrawLine(10,10);
}
Devo istallare qualcosa che mi permetta di usare la grafica, oppure ho
commesso qualche errore?

}
A parte che sarebbe OT, come possiamo capire dov'e' il problema se nel
programma che hai inviato non c'e' nemmeno una funzione standard C ?
Cosi' a naso direi che la InitGraphics non inizializza un bel niente e
quindi appena cerchi di usare un comando grafico esce l'errore.
ciao

 ha scritto nel messaggio
news:8hoava$3jc$1...@serv1.albacom.net...


Newsgroup: it.comp.lang.c
Titolo: Indirizzo Gcc per PC

Aiuto,
qualche brava persona mi saprebbe dire l'indirizzo per scaricare il
compilatore GCC per PC?
Grazie

...


 compilatore GCC per PC?
Se vuoi il DJGPP (porting per DOS del GCC) basta che cerchi DELORIE
(l'autore del porting) su un qualunque motore, vai alla sua home-page e
poi segui i links per il download.
EMG

 Grazie
http://www.cygnus.com
Li' puoi trovare il gcc e il g++ (GnuWin32) per DOS/Windows.
Ciao, UDA.
-- 
<><><><><><><><><><><><><><><><><><><><><><><><
UDA'Software
mailto:
uda.so...@iol.it
http://www.GeoCities.com/SiliconValley/Bay/2165
Newsgroup: it.comp.lang.c
Titolo: Che disperazione!!

Salve a tutti,
il mio programma per la gestione di un dizionario compila
correttamente, viene linkato e l'eseguibile viene preparato
correttamente senonchè... puff! Appena il programma parte esce una
finestra d'errore "Il programma ha eseguito un'operazione non
valida e sarà terminato". Che diavolo può essere? C'è qualche anima
pia che mi può dare un'occhiata al codice? Non so se postarlo, è un
po' lunghetto...
SIGH!
Ciao

Ciao
Probabilmente.... ma e' un'ipotesi, pur non essendoci arrori  di
sintassi, succede qualcosa tipo sforature negli array... Se vuoi
postarmelo... pero' non ti assicuro nulla :-)

Newsgroup: it.comp.lang.c
Titolo: problema da niubbo con EOF

Al capito 1.5.3 di "Linguaggio C" di Kernighan & Ritchie c'ï¿œ questo codice che 
conta le linee:
--------
#include <stdio.h>
int main(void)
{
         int cnt_linee = 0, c;
         while ((c = getchar()) != EOF)
                 if (c == '\n')
                         ++cnt_linee;
         printf("Linee: %d\n", cnt_linee);
         return 0;
}
--------
Perchï¿œ mi dï¿œ il seguente output?
--------
$ ./cnt_linee
questa
ï¿œ
una
prova
^C
$
--------
Cosa sbaglio?
Grazie!

 Grazie!
devi usare control D non control C.
^D
Linee 4...
micheg

 micheg
Ma tu guarda! Com'ï¿œ sconfortante essere niubbi!
Newsgroup: it.comp.lang.c
Titolo: APERTURA FILE HELP!

Ciao ragazzi. Vorrei realizzare un programma che mi permetta di aprire un
file presente sul disco immettendo. Il problema sta nel fatto che il
programma deve chiedere che file voglio aprire e in base a ciň viene
eseguita fopen. Come posso fare?
Grazie

 in base a ciò viene eseguita fopen. Come posso fare?
<code>
	#include <stdio.h>
	#define FILENAME_LENGTH 255
	int
	main(void)
	{
		char filename[FILENAME_LENGTH];
		FILE                     *file;
		puts("Please insert the name of the file");
		fgets(filename,FILENAME_LENGTH-1,stdin);
		if((file=fopen(filename,"w"))==NULL) {
			perror(filename);
			return 1;
		}
		/* ... */
		fclose(file);
		return 0;
	}
</code>
  Eri cosi` sicuro di non poterci riuscire da solo?
	Alla prossima,
		Marco

 in base a ciň viene eseguita fopen. Come posso fare?


 non mi basta! Come faccio?
  O ti basta
	system("start miodocumento.doc");
oppure devi imparare come funziona il protocollo OLE della Microsoft,
che in questo gruppo e` OT.
	Alla prossima,
		Marco

 ha scritto nel messaggio
news:3B32165D...@bar.va...



Allora ti prepari la stringa da passare a system
es: sprintf(comando,"start %s",argv[1]);
system(comando);

 ha scritto nel messaggio
news:9guv9b$8j7$1...@lacerta.tiscalinet.it...


 ha scritto nel messaggio
news:9guv9b$8j7$1...@lacerta.tiscalinet.it...


 sprintf("c:\windows\notepad.exe","start %s",input);
man sprintf


Prova ora e fammi sapere!
Corvo

 ha scritto nel messaggio
news:WHGY6.3552$8R5....@news.infostrada.it...


 > >


 ha scritto nel messaggio
news:6fNY6.7301$8R5.1...@news.infostrada.it...

Newsgroup: it.comp.lang.c
Titolo: parametri

Salve a tutti, ho bisgno di un piccolo aiuto.
Il problema č il seguente, devo passare ad un EXE un parametro (un nome)
Es.PROGRAMMA.EXE pippo
Quale istruzioni devo usare per ottenere il seguente risultato.
Sono graditi anche degli esempi.
Ciao e grazie a tutti.

 Sono graditi anche degli esempi.
non ho capito che vuoi fare.
eseguire un programma all'interno di un'altro programma C?
se è così usa:
system("programma.exe pippo");
o semplicemente eseguire un programma con degli argomenti?
in questo caso apri il prompt del dos, posizionati nella directory dove è situato il programma (es. se è in
C:\programmi\prova\test.exe)
scrivi:
c:  [INVIO]
cd programmi\prova  [INVIO]
test.exe argomento1 argomento2 ...  [INVIO]
oppure se ti interessa ho scritto una shell extension per windows (95, 98, ME, NT,2000, XP) che basta clickare col pulsante destro
sull'exe e scegliere una voce di menu, poi comapre una finestra dove scrivere gli argomenti e premi ok, e lancia il programma con
gli argomenti specificati
cioa
xaero

 
Ciao,
Esempio:
rem *** File Batch /Inzio ***
cd \
programma_C.exe %1
rem *** File Batch /Fine ***
Ciao e grazie per l'aiuto

 Ciao e grazie per l'aiuto
Devi specificare i parametri nella main cosě:
int main (int argc,char *argv[])
{
       if(argc>1)
      printf("%s\n",argv[1]);
     return 0;
}
Questo programma stampa il primo argomento della lista se esiste...credo che
sia un esempio di quello che ti serve
(sempre se ho capito quello che vuoi)!
p.s. argc é il numero degli argomenti (compreso il nome del programma )
mentre argv é l'array delle stringhe corrispondenti
es:
programma %1
argc=2
argv[0]="programma"
argv[1]="%1"

, 
f.on...@tiscalinet.it
 
says...
Si grazie era quello che cercavo

Newsgroup: it.comp.lang.c
Titolo: Ciclo for e Messaggi Window

Gentile NG,
In una fuznione ridisegno una scena OpenGL molto complessa tanto da
richiedere qualche secondo di attesa.
Vorrei interrompere il ciclo for che uso per il ridisegno utilizzando un
controllo che testi l'avvenuta ricezione di un messagio window di pressione
di un tasto di tastiera o di mouse. Utilizzo senza problemi la gestione di
eventi con il C++ Builder ma non riesco in questo in quanto il messaggio
viene intercettato dopo che il ciclo for finisce.
Come fare?
Grazie,
Cristoforo Billa
0000...@yescard.it





Newsgroup: it.comp.lang.c
Titolo: [OT]Gcc3.3

Salve a tutti , sul mio pc uso Djgpp con WinME
ho trovato su un cdrom i file sorgenti e librerie 
del Gcc-gcj 3.3 ,ci sono file.c , .h, .cpp, .java.
Mi sapete dire se č possibile compilare tramite 
il Djgpp questi file sorgenti e "costruire" il gcc versione3.3
utilizzando le librerie fornite ?
o quale metodo/utility si deve usare per costruire un nuovo
compilatore?e presente un file MakeWin32 , come si usa?
Grazie a tutti 
ciao

"[//**Newbie**\]" <xzy@???.org> ha scritto nel messaggio
news:YvcVa.209128$Ny5.6...@twister2.libero.it...

aspetta di trovare gli exe sul sito del djgpp ... mi sono gia' tirato scemo
io a cercare una risposta su come compilarlo con il mingw, e da profani non
si riesce ci vogliono troppi fix.
ciao
Newsgroup: it.comp.lang.c
Titolo: socket no blocking

Ciao sono un neofita con la E maiuscula vorrei sapere come settare un socket
no bolck,
Grazie 
Un saluto di pace 


Devi usare i thread o su unix la fork
--------------------------------
Inviato via 
http://usenet.libero.it

 Inviato via 
http://usenet.libero.it
 
hops..intanto grazie...mi sono dimenticato di dire che sto in ambiente
linux.


Allora la fork


 
Ti ringrazio mi sono andato a vedere le fork ed ho fatto progressi.
Non è che sai consigliarmi un tutorial (italiano) o dei link su cui avere
piu informazioni sulle fork ed i socket? 


anche sotto linux ci sono i threads che ti consiglio piu' vivamente della
fork in quanto permettono scambi di messaggi tra i threads piu' veloci e
meno macchinosi, inoltre il contex switching e' piu' veloce (o lo diventera'
col nuovo kernel)
ciao,
Nids
p.s.: cerca su google pthreads

 socket no bolck,
puoi usare una cosa così:
int setnonblocking(int socket)
{
int flags;
if ((flags=fcntl(socket,F_GETFL,0))<0)
        return -1; 
        else flags |= O_NONBLOCK;
if (fcntl(socket,F_SETFL,flags)<0) 
        return -1;
return 0;
}
-- 
No matter. Try again. Fail again. Fail better.
Newsgroup: it.comp.lang.c
Titolo: stringhe costanti e pointers

Nel libro: 
C - Manuale di programmazione
Darnell - Margolis 
ed. McGraw-Hill
la riga di codice indicata dal commento viene indicato come corretto:
int main(void)
{
        char *ptr = "ciao";
	printf("%s\n", ptr);
	ptr[0] = 'n';        /* questa riga */
	printf("%s\n", ptr);
	exit(0);
}
Ragionandoci su, non ci vedo nulla di sbagliato neanche io. Ma il Gcc mi da
segfault dopo aver stampato ciao. Usando Gdb per cercare di capire cosa
accade, il programma invece riesco ad  eseguirlo senza problemi. 
Cos'è che non capisco?
-- 
Giovanni

 segfault dopo aver stampato ciao.
   /ptr/ e` un puntatore ad un letterale costante che non dovrebbe 
essere modificabile. La riga da te indicata, invece, modifica la prima 
locazione di memoria puntata da /ptr/: e` ovvio che il programma vada in 
segmentation fault.
-- 
Baci,
Mony

Ragionandoci su, non ci vedo nulla di sbagliato neanche io. 
Il gcc ha ragione e la tua guida e' in errore.
La stringa "ciao" potrebbe essere costituita da caratteri
costanti, che quindi non sono modificabili.
"Potrebbe" perche' lo standard non obbliga che lo sia.
-- 
Andrea Laforgia (
walkie...@libero.it
)
"Usenet is a strange place" [Dennis Ritchie]

 
Se il gcc mi da errore significa che sceglie il caso delle variabili costanti,
giusto? 
btw, il libro che uso è il K&R. Su questo davo un'occhiata agli esempi (da
oggi doppia occhiata, poi).
Grazie e ciao
-- 
Giovanni

oggi doppia occhiata, poi).
Leggi a pag 132 della versione italiana del K&R.
Si parla di un puntatore definito cosi':
esempio: char * pmessage = "stringa";
E ti dice chiaramente che "Al contrario" (qui si riferisce ad char *
amessage[] = "stringa") "pmessage e' un puntatore, inizializzato in
modo che punti ad una strinta costante; di conseguenza, esso puo'
essere modificato in modo che punti altrove, ma se tentete di
modificare il contenuto della stringa il sirultato sara' indefinito."
Mox :)

 ha scritto nel messaggio
news:lf9kPIY+Rjv=PqdEE1lK...@4ax.com...

Infatti, anche se non è standard(ma esiste in pratica
ovunque), c'è la funzione strdup che crea una copia di una
stringa:
#include <string.h>
  char * strdup (const char *source);
potresti fare:
  char * pmessage=strdup("Stringa non modificabile");
strdup chiama malloc per allocare un buffer di dimensioni
uguali a strlen(source)+1 (per il NULL finale), dopodiché
chiama strcpy per copiarvi la source e infine restituisce la
stringa allocata, che si trova sull'heap ed è
modificabile(mentre invece la tabella delle stringhe, che si
deve trovare all'interno del file EXE, non è modificabile).
Come ti renderai conto, sei costretto a chiamare
free(pmessage), controllando ovviamente che non sia
NULL(come sai free(NULL) è molto pericoloso).
--
Paolo Giarrusso

 NULL(come sai free(NULL) e` molto pericoloso).
free(NULL) non fa assolutamente nulla. E' previsto dallo standard.
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
Il dottore mi ha detto di smettere di fare cene intime per quattro.
A meno che non ci siamo altre tre persone.
Newsgroup: it.comp.lang.c
Titolo: Ma il compilatore mi odia forse?

Scusate, ma mi si stà presentando un problema a cui non mi so dare risposta.
In pratica ho un warning:
Warn :appoggio.h(6,2):Cannot create pre-compiled header: initialized data in
header
Info :Linking C:\Tesi\main.exe
Il file a cui si riferisce è un file appoggio.h che è "incluso" in un altro
file.h.
Sarebbe a dire che ho un file global.h fatto cosi:
#define max_size 64
#define n_dup 3
#include "appoggio.h"
#include  "packet.cpp"
#include  "sack_pac.cpp"
#include  "mplx2.cpp"
#include  "ack_list.cpp"
multiplexer mplx;
ack_list    list;
ed appoggio.h è fatto cosi:
#define null_seg 0
#define data_seg 1
#define dummy_seg 2
char a;
int n_conn, rwnd;
double RTO, RTT;
int mpx_size;
double t_end;
double DT, p_loss;
typedef unsigned long int PID;
unsigned long int nt_seg;
FILE *file_out;
FILE *receiver_file;
FILE *sender_file;
Aggiungo che nei file .cpp sono dichiarate classi, metodi.... ecc, ecc.
La domanda che volevo fare è se è lecita una inclusione di un file.h
all'interno di un altro file.h.
Forse è per questo che mi da il warning?
Grazie .

Lo sapete che forse ho scoperto che è il typedef unsigned lomg int PID che
fa danno?
Ho provato un esempio costruito da me in cui non c'era il typedef e tutto
quadrava, anche se c'erano inizializziazioni nei file.h
Non appena ho messo il typedef mi ha dato il warning.
Se fosse questo come faccio a generare un file .h condiviso dai vari
spezzoni su file del sorgente in cui faccio un typedef?
Grazie ancora
Newsgroup: it.comp.lang.c
Titolo: da stringa a intero

Salve a tutti. Esiste una funzione che converta una stringa in un intero ?
Grazie in anticipo.
-- 
*** Gottardi Matteo / 
goma...@tin.it
 ***
*Linux*, the choice of a _GNU_ generation

int i;
sscanf("%d", &i);
Ciao Luciano
Matteo Gottardi ha scritto nel messaggio ...


int atoi( const char *string );
e' quella che fa al caso tuo. !!!!!!!!!
Ciao
--
Posted from 
server.rivoli.alpcom.it
 [194.116.14.2]
via Mailgate.ORG Server - 
http://www.mailgate.org


OOPS!
int i;
sscanf(stringa, "%d", &i);
Ri-ciao Luciano

Grazie in anticipo.
Ce ne sono parecchie.  La piu' semplice e'
    int atoi(const char*);
dichiarata in <stdlib.h>: le passi la stringa e ti torna l'intero.  Naturalmente,
vista la semplicita', non fa "diagnostica", bensi' "s'interrompe" nel punto in
cui la stringa non puo' piu' essere la rappresentazione di un intero, e non
hai modo di verificarlo.  Ad esempio, atoi("23pippo") ritorna 23, mentre
atoi("pluto") ritorna 0.
La funzione di conversione piu' ricca e complessa, sempre dichiarata
in <stdlib.h>, e' invece
    long strtol(const char*, char**, int);
la quale, oltre a tornarti il numero (long, non int, ma penso che possa
andarti bene lo stesso?), ti lascia attraverso il secondo argomento un
puntatore al "primo carattere NON ''consumato''" della stringa di input
(grazie al quale puoi diagnosticare eventuali errori, con diversi tipi di
"severita'" secondo le tue esigenze); inoltre, grazie al terzo argomento,
puoi forzare la strtol ad accettare una determinata "base" per le
stringhe (in pratica, il terzo argomento e' normalmente 0, per accettare
qualsiasi base sia specificata nella stringa di input con default a
decimale, occasionalmente 16, oppure 2, 10, 8...).  Attenzione che
con base 0 si ha una tipica trappola del linguaggio C: la notazione
ottale!  Ad esempio "051" e' una stringa che rappresenta un numero
*ottale* il cui valore decimale risulta *quarantuno* -- se la stringa viene
da un input di utente, sara' MOLTO difficile che questo sia il risultato
desiderato! (Soluzione semplicissima: skippare eventuali zeri iniziali
PRIMA di sottoporre la stringa a strtol...).
Alex



Newsgroup: it.comp.lang.c
Titolo: CACCIA ALL'UOMO!!!

(OT)
Scusate l'intrusione,ma e' importante!!!
Ho postato la settimana scorsa chiedendo per la disponibilita' al codec
MP4...
Mi ha risposto in mailbox un F.D.P. tale "tore"(penso diminutivo di
Salvatore) che mi ha mandato un eseguibile spacciandolo come guida o giu' di
li' al codice...Uhm...NORTON...OK... PC cilin98...OK...Vabbe' lo lancio...
Non succede niente...
Alla successiva accensione del computer mi appaiono strane finestre di
Dos...rename...delete...blocco tutto e leggo tra le righe..."PRINGLES"!!!
E' il programma mandatomi dal F.D.P.!Lo cancello da DOS ma ormai mi ha gia'
cancellato tante,troppe cose!!!Morale:ho dovuto formattare...
Se qualcuno ha notizie derivanti dalla mia descrizione...mi aiuti...
P.S.
astenersi "*.exe"
:))



Questo tore spedisce virus a tutti, ma sono piuttosto antichi. Il mio PC
(w95) e quello dell'ufficio (NT) si sono rifiutati di salvarli persino su
disco, mentre NT addirittura, su insistenza mia, una volta eseguito l'ha
interrotto con "Istruzione non valida"...
Comunque, stai attento a cosa ricevi, evita di eseguire i programmi che
ricevi se non sei sicuro di cosa contengano, di chi te li ha mandati, e di
non temere una riformattazione...
La caccia all'uomo no. Semmai segnala la cosa al suo provider. Puoi anche
denunciarlo, se vuoi, dato che diffondere virus è un reato.
--
Alessandro Monti

 wrote in message
83dinq$6fj$1...@lacerta.tiscalinet.it...

Newsgroup: it.comp.lang.c
Titolo: Underscore... matters!

Salve a tutti.
Ringrazio quanti hanno chiarito la questione delle "struct enum", e
passo a porvi il seguente, semplice quesito.
In molte librerie sono definite delle funzioni e variablil che iniziano
con un'underscore tipo: "_funzione()").
Dal momento che sono certo che questo non influenza minimamente il
codice finale, che significato ha?
Mi sembra che venga utilizzato piů che altro per le funzioni/variabili
di cui l'utente finale della libreria non dovrebbero preoccuparsi... č
giusta l'interpretazione?
Thanks!
-- 
+ ICEMAZE +
ice...@planet.it
"Digito ergo sum"

 "Digito ergo sum"
-- 
Zack
Stefano Zacchiroli
zacc...@cs.unibo.it
za...@comune.budrio.bo.it
ICQ# 33538863
"Never understimate the dark side"

 con un'underscore tipo: "_funzione()").
I casi sono molteplici:
- le funzioni vengono trasformate aggiungendo un underscore nel file oggetto
- alcune costanti e variabili vengono dichiarate con underscore (talvolta
doppi) di modo che non si possa ridefinerle per sbaglio (assumendo che
nessuno faccia iniziare il nome delle sue costanti e variabili con
underscore
- alcune funzioni vengono dichiarate già con l'underscore (e quindi si
raddoppia dopo la compilazione) per indicare che sono specifiche
dell'implementazione del compilatore, e non andrebbero usate perchè non vi è
garanzia che saranno supportate in futuro, o come minimo che non sono
standard.
--
Alessandro Monti

you wrote :
#Dal momento che sono certo che questo non influenza minimamente il
#codice finale, che significato ha?
Visto che e' improbabile che tu scriva una tua routine il cui nome
inizi per underscore, e' altrettanto improbabile che tu tenta di
ridefinire inavvertitamente una funzione gia' presente in libreria.
--------------------------------------------------------
* Andrea Laforgia        (
andrea_...@bigfoot.com
) *
--------------------------------------------------------
Newsgroup: it.comp.lang.c
Titolo: Problemi con il DJGPP

Ho dei problemi con il DJGPP.
Mi da le precedenze alle funzioni ...... faccio un esempio.
/...../
printf("prova di stampa\n\nAttendere");
delay(2000);
/ ..../
Mi stampa prima "prova di stampa" poi mi fa il delay e poi mi stampa
"Attendere"
Le varie stringhe sul autoexec.bat le ho cambiate e provate di diverse ma il
problema continua.
Ho anche riscaricato il compilatore...tra un po provo con la libreria (mi
manca solo quella).
A voi vi è mai capitato uno scherso del genere?
E come lo avete risolto?
Ciao a tutti e grazie.

"Attendere"
L'output su stdout è bufferizzato, il che vuol dire che le cose che tu
ordini vengano scritte a schermo in realtà restano immagazzinate in un
buffer intermedio e scaricate a schermo secondo schemi che hanno una loro
logica, ma che in questa sede non interessano.
Come puoi fare per evitare tutto ciò?
Prova a chiamare
fflush(stdout);
dopo la chiamata a printf() e prima della chiamata a delay().
Dovrebbe funzionare.
Lanugo

Semplice, non scrive attendere perchè non hai messo il \n dopo attendere:
printf("prova di stampa\n\nAttendere\n");
E quindi quest'ultimo viene stampato solo all'uscita del programma:
la printf, stampa una riga solo quando questa è completa, per completa si
intende con l' "a capo" compreso, infatti se avessi scritto:
printf("prova di stampa\n\nAt");
printf("tendere\n");
avresti comunque ottenuto ciò che volevi.
BYEZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
Daniele loddo ha scritto:

Newsgroup: it.comp.lang.c
Titolo: Segnali e deadlock

Ciao a tutti, sto realizzando una applicazione sotto Linux e ho un problema.
Fondamentalmente, la mia app deve usare i segnali e devo far si che due
processi, che lavorano in concorrenza, si sincronizzino tra loro.
Questo è il problema... Diciamo di avere il processo A e B
Questo il codice:
processo A:
kill (pid_of_B, SIGUSR1 );
sigsuspend(&mymask);
processo B:
siguspend(&mymask2);
kill(pid_of_A, SIGUSR1);
Questo è quello che succede (sbagliato nella parte finale): B entra in
sigsuspend. A manda un segnale a B. B esce da sigsuspend e manda il secondo
segnale *PRIMA* che A entri in sigsuspend. A quindi si perde il segnale e
rimane per sempre dentro a sigsuspend. Ho la conferma al fatto che A non
bufferizzi il segnale perchè se, una volta che A è bloccato, re invio un
secondo segnale, A lo sente e si sblocca. Sto cercando una soluzione
efficiente al problema. Qua ce n'è una, ma è un po' una schifezza... Ecco
qua:
Process A:
int unlock=0;
static void sig_handler(int signo)
{
    unlock=1;
}
void main()
{
/* A lot of code here */
kill (pid_of_B, SIGUSR1 );
while(!unlock);
unlock=0;
}
process B:
siguspend(&mymask2);
kill(pid_of_A, SIGUSR1);
Questa versione funziona, perchè il signal handler viene sempre chiamato,
per cui è la variabile unlock che si "ricorda" che è arrivato un segnale.
Questa versione funziona sempre e comunque, o almeno, provandola così
sembra. Però è una schifezza... uso una variabile globale e A è costretto a
looppare sprecando cicli di CPU.. Posso fare qualcosa di meglio?
Grazie a tutti per l'attenzione

 Ciao a tutti, sto realizzando una applicazione sotto Linux e ho un problema.
it.comp.os.linux.development
Ciao ;)
-- 
Mat/tia Belletti - Undergraduate student @ 
cs.unibo.it
ICQ: 33292311    - email: 
mbel...@cs.unibo.it
IRC: RedGlow     - site(s): 
http://www.cs.unibo.it/~mbellett
Linux registered user 299762 @ Linux registered machine 213003
Newsgroup: it.comp.lang.c
Titolo: anomalie di fread

Non riesco a venire a capo di un problema piuttosto stupido....
Allora la cosa funziona cosi' dato un file aperto con fopen (in
modalita' binaria) procedo ad acquisire uno a uno i byte del file
sorgente, faccio su questi uno XOR (con una chiave esternas) dopo di
che vengono scritti in un file destinazione con fwrite.
Il tutto funziona benissimo senza intoppi, ma se scrivo un file di
testo (con un semplicre editor) e vado a capo (inserendo quindi
presumibilmente dei /n nascosti) al momento della lettura e
riscrittura il testo viene troncato.
Xche ? Che cosa acquisisce fread quanfdo trova il /n ???
Augusto Pucci
Webmaster di Prospektiva On-line
http://www.prospektiva.it

 Xche ? Che cosa acquisisce fread quanfdo trova il /n ???
A parte il fatto che è \n :)), se devi lavorare con dei textfiles già
esistenti, ti conviene una fgetc() ciclata dentro ad una while.
Alessio Rocchi
Computer Science Engineering Student
Linux USers' POint Rome Admin

esistenti, ti conviene una fgetc() ciclata dentro ad una while.
Uhm, ma che cosa acquisira' secondo te quando trovera' il new line ?
Facendoci poi uno XOR con un elemento del tutto arbitrario ?


 riscrittura il testo viene troncato.
In che senso "viene troncato"? Sotto windows, normalmente gli editor
aprono i file in modalita' "testo", pertanto quando vai a capo vengono
inseriti due caratteri (CR e LF). Se il file viene aperto dal tuo
programma
in modalita testo, Il S.O. si occupa di fare la traslazione e di fartene
vedere
uno soltanto. Ma se il file modificato viene aperto in modalita' binaria
i due
caratteri si vedono eccome.
Ciao Angelo.



Dunque il problema si e' verificato sotto dos.
Editando un file di testo (di prova) con l'edityor di Ms-Dos e
passandolo al programmino di crittatura per riga di comando, quando
poi reinverto iol processo mi accorgo che il testo viene del tutto
eliminato a partire dall'ultimo \n dell'originale.

Newsgroup: it.comp.lang.c
Titolo: void *

Salve... a che servono i puntatori a void se non si possono
dereferenziare?

 dereferenziare?
Non si possono dereferenziare ma si possono convertire in qualunque
altro tipo di puntatore. Quindi si usano come puntatori generici, quando
non si sa a priori il tipo di puntatore necessario (come ad esempio per
il tipo restituito dalla funzione malloc()).
EMG
--
EMAG Software Homepage:     
http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: 
http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: 
http://www.emagsoftware.it/tbosg

 il tipo restituito dalla funzione malloc()).
la cosa piu' figa dei puntatori void e' che in un progetto ti permettono
pure di far cambiare di valore alle costanti ;-) quindi se perforza in un
progetto hai una costante che non potresti cambiare in runtime ma
successivamente stai sviluppando qualcosa che perforza deve riadattare la
costante con il trucco dei puntatori riesci a fregare il compilatore che non
ti permetterebbe seno di riassegnare valori alla costante
poi vabbe lo puoi anche castare dinamicamente in runtime puoi usarlo per
puntare ad oggetti che non conosci come nome
poi non mi ricordo se ci sono altri utilizzi ... cmq in c hai solo il limite
della fantasia per gli utilizi e limiti di struttura per come impplementarli

urlando "ancora" come fanno tutte. (Pavlov)

 pure di far cambiare di valore alle costanti ;-)
Perché farsi del male da soli?


 puntare ad oggetti che non conosci come nome
Si, vabbeh... come secondo o terzo impiego :-)

 pure di far cambiare di valore alle costanti ;-)
E quale progetto avrebbe bisogno di questa cosa?
Tommy

 ha scritto nel messaggio
news:b8ts0u$jal$1...@hercules.btinternet.com...

non lo so ... :-p
era solo per dire che in c sei liberissimo di fare quello che vuoi ...

 era solo per dire che in c sei liberissimo di fare quello che vuoi ...
Sempre se l`hardware te lo permette :)
-- 
void
<void> Pikkio: Baciami il sederino :)
<Pikkio> void: (___)(___) SMACK

Newsgroup: it.comp.lang.c
Titolo: realloc()

Che voi sappiate, l'uso di realloc() per diminuire l'area di memoria 
ottenuta con una malloc() è lento?
Cioè io SICURAMENTE dovrò diminuire l'area di memoria ottenuta, il 
realloc() sarà lento o sarà solo qualcosa tipo modifica della tabella 
interna di cui fanno uso malloc() e free()?
Perchè presumo che utilizzando la funzione per *aumentare* lo spazio 
inizialmente richiesto può essere lento per via dello spostamento dei 
dati verso una nuova zona di memoria, però nel mio caso non dovrebbe 
essere così, o sbaglio?
Thx in anticipo!
-- 
Quando noi ignoranti eravamo di più, tutto era più bello...
(A. Celentano)
Per rispondermi in privato, togli prima l'immondizia dalla testa ;)

 essere così, o sbaglio?
Un'implementazione potrebbe decidere di allocare una nuova area di
memoria ad ogni chiamata di realloc e sarebbe perfettamente a norma
di standard. Il buon senso suggerisce che nel tuo caso non ci saranno
allocazioni ne` copie di dati ne` chiamate al sistema operativo.
Luca
-- 
Home: 
http://kronoz.cjb.net
This message will self destruct in 5 seconds.
Newsgroup: it.comp.lang.c
Titolo: programmazione concorrente in c

	Salve a Tutti
Devo realizzare un cgi-bin che accede ad un file di testo e setta un 
determinato carattere, però devo stare attento che quando qualcuno accede 
al file nessun'altro possa farlo, tale programma girerà sotto Linux, come 
posso realizzare una sincronizzazione dei processi in maniera concorrente?
Grazie Mille
-- 
Posted from [212.97.39.18] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 una sincronizzazione dei processi in maniera concorrente?
	$ man flock
	$ man fctnl
	news:it.comp.linux.*
	Alla prossima,
		Marco

Newsgroup: it.comp.lang.c
Titolo: resettare buffer

ciao,
sto scrivendo un programma che comunica tramite socket TCP.
Il server (in java), scrive sulla socket o '1' o '-1' dopo averli convertiti 
in sequenza di bytes
in C ho fatto una cosa del genere
-------------------------------
char recvbuf[BUFF_SIZE];
while(inVista<0 ) {
    if(recv( socket, recvbuf, BUFF_SIZE, 0 )<0)
    {
        printf("SI_attesa_SV: Errore ricezione inVista \n");
        getchar();
        exit(1);
    }
    printf("%s\n",recvbuf);
    inVista=atoi(recvbuf);
}
-----------------------------------
il problema è che dovrei resettare il buffer ad ogni ciclo, ma non so come 
fare.
Infatti se per esempio BUFF_SIZE = 5 ad ogni ricezione di '-1' andrea a fare 
atoi() di
-1***
una volta ricevuto '1' recvbuf però varrà
11*** (il secondo uno è un residuo di prima)
Come faccio????
Grazie
Cendo

 Cendo
Ciao
M`

 "casuale".
char recvbuf[BUFF_SIZE];
è scritto fuori dal ciclo while, quindi recvbuff punta sempre alla stessa 
cella di meoria, non viene ridichiarato ogni volta
Quell'1 sono quaso sicuro che sia un residuo (cmq non è questo il problema).
GRAZIE
Cendo 

 Cendo
Ciao
m`

Newsgroup: it.comp.lang.c
Titolo: Sincro Processi Linux

Ciao a tutti,
sto scrivendo un'applicazione C sotto Linux e non sono un grande esperto di
programmazione. In quest'applicazione un processo padre genera vari figli
con cui dovrà scambiarsi informazioni. Per la comunicazione, per adesso, mi
sono affidato ai socket. Il problema è che i processi dovrebbero attivarsi a
turno secondo una certa sequenza. Come posso fare a sincronizzarli?
Grazie
Ciao
Franco
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 turno secondo una certa sequenza. Come posso fare a sincronizzarli?
Siccome processi multipli e socket non fanno parte dello standard, 
dovresti chiedere su it.comp.os.linux.development, dove si parla di 
sviluppo nell'ambito di questo sistema operativo. Li` l'argomento e` 
piu` `all'ordine del giorno'.
-- 
Enrico `Trippo' Porreca

 wrote in message
news:82Z84Z130Z236Y1...@usenet.libero.it

Per far comunicare tra loro i processi puoi usare le "pipe".
int mypipe[2]; //sono una pipe per leggere e una per scrivere.
se la generi prima di generare i figli, per la condivisione dei dati
la vedra' sia il padre che il figlio. Poi mandi i msg con una write
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG
Newsgroup: it.comp.lang.c
Titolo: grafi

ciao!devo fare questo esercizio,in sintesi:
implementare la tecnica d'approssimazione per stampare scatter plots.
io non capisco proprio la domanda...
p.s.non posso usare librerie particolari
grazie a tutti,ciao
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 grazie a tutti,ciao
basandosi sul minimum spanning tree


Newsgroup: it.comp.lang.c
Titolo: Nuovo newsgroup sulla programmazione Win32

Salve a tutti,
come potete vedere dal messaggio RFD: it.comp.prog.win32 ho fatto
richiesta per la creazione di un nuovo newsgroup sulla programmazione
per Windows a 32 bit tramite API, o i vari framework (MFC, OWL, ...) chi
fosse interessato puo' contattarmi via E-mail o in questo newsgroup.
Se mi contatterete numerosi, allora decidero' in tempi brevi di passare
alla votazione del newsgroup e se i voti saranno sufficienti verra'
creato.

fosse interessato puo' contattarmi via E-mail o in questo newsgroup.
Come gia` sai sono decisamente favorevole (a parte un dettaglio
sul nome).
Vorrei invece approfittare dell'occasione per ricordare a tutti che
la discussione si deve svolgere solo su it.news.gruppi, non su questo
gruppo (it.comp.lang.c) o altri.
Alex

fosse interessato puo' contattarmi via E-mail o in questo newsgroup.


Newsgroup: it.comp.lang.c
Titolo: C & MIDI !!! Aiutatemi ...

Dove posso trovare librerie C standard  per trattare i Midifiles ed
informazioni dettagliate sul formato di tali files ??? In particolare
mi interessa sapere  se è possibile mandare via MIDI caratteri ASCII
sul display della mia tastiera ( una Roland E-35 , GS compatibile ) o
di altre in generale.
Grazie.			
uga...@libero.it

 Dove posso trovare librerie C standard  per trattare i Midifiles
Non esiste una libreria C standard per i MIDI.
EMG

Newsgroup: it.comp.lang.c
Titolo: The Greatest News Ever!

http://www.jcil.blogspot.com
 << The Greatest News Ever!





Newsgroup: it.comp.lang.c
Titolo: while e do()while

salve a tutti.
mi fareste per favore un esempio (anche banalissimo)
in cui si giustifica l'uso di do...while al posto del semplice while?
grazie e ciao!

Karlheinz Stockhausen ha scritto:

Quando le istruzioni del blocco *devono* essere eseguite almeno una 
volta. Per esempio un menu per scegliere qualcosa
do{
  stampa opzioni
  leggi opzione scelta
}while(scelta non valida);
-- 
Devaraja (Xdevaraja87^gmail^c0mX)
Linux Registerd User #338167
http://counter.li.org

 in cui si giustifica l'uso di do...while al posto del semplice while?
supponiamo che tu debba fare una operazione "op()" almeno una volta e poi 
debba verificare se farla successivamente:
do{op();}while(condizione)
Tuttavia come si può abbracciare con la logica non è strettamente 
necessario..
potresti ovviare al problema con
op();
while(condzione){op();}
Però quarda quanto è stilisticamente più gustosa la prima possibilità.... 
^_,^
Newsgroup: it.comp.lang.c
Titolo: principiante

Ho compilato con successo un programma in C.
La mia domanda è la seguente: sul mio PC con sistema operativo XXXX
tale programma  funziona; su un altro PC con lo stesso sistema
operativo XXXX *lo stesso programma* (lo stesso file)  funzionerà allo
stesso modo? 

No!
Dovrai ricompilare il programma sul pc con l'altro sistema operativo!
E bada bene che quando scrivi un programma è un impresa far si che sia
portabile al 100% verso un altro sistema operativo (OS), perche molte volte
cambiano i nomi delle funzioni, o altre caratteristiche delle librerie del
compilatore.
Dome
--
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
PC Brain Official Web Site
http://digilander.iol.it/pcbrain
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

"iii" <i...@i.ii> ha scritto nel messaggio
news:3ba117a...@news.tin.it...

solo se sono uguali anche le risorse che il tuo programma usa,
- per esempio l'hardware (es il tuo programma usa la COM2 su un
portatile che ha solo la COM1 ovviamente non funziona)
- file esterni, tipo driver per gestione periferiche in DOS (il tuo
programma usa il mouse, ma sul PC non e' installato il mouse driver)
- librerie dinamiche (DLL) in windows e affini.
ciao
donCiccio

stesso modo?
Si'.
--
Andrea Laforgia - walkietalkie(at)
libero.it
http://www.geocities.com/AndreaLaforgia

portabile al 100% verso un altro sistema operativo (OS), 
Lui sta parlando dello STESSO sistema operativo.


> Lui sta parlando dello STESSO sistema operativo.
Ops ;))))
Pardon Messier Laforgia, ho letto male ;)))


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

qualcuno sa come č realizzata?
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (
http://www.grisoft.com
).
Version: 6.0.394 / Virus Database: 224 - Release Date: 03/10/2002

 qualcuno sa come č realizzata?
Ne trovi tante diverse versioni in rete, tipicamente nei 'cvs view' delle 
varie implementazioni open-source di librerie standard C.  Ad es,
http://www.freebsd.org/cgi/cvsweb.cgi/src/lib/libc/stdlib/malloc.c
 e`
la 'phkmalloc' del BSD, abbastanza semplice.
A 
http://www.cs.colorado.edu/~zorn/Malloc.html
 trovi un elenco di una
dozzina di implementazioni diverse, con brevi appunti su quello che
distingue ciascuna di esse.
Una varieta` di implementazioni che sono in considerazione per
sostituire quella attuale nel djgpp sono scaricabili, con benchmark
per il confronto fra di esse, a partire da
http://www.delorie.com/djgpp/malloc/
 .
A 
http://www.realtime-info.be/vpr/layout/display/pr.asp?PRID=3265
una dettagliata discussione dell'implementazione di malloc per uClinux,
su sistemi embedded senza memoria virtuale.
Se ti interessa la teoria, il miglior libro che la copre e` il volume 1 di
Knuth, "Art of Computer Programming" -- copre anche tante altre
cose, certo, ma il suo "buddy allocator" in particolare e` un classico.
Alex
Newsgroup: it.comp.lang.c
Titolo: Impostare timeout su socket

 
Un saluto a tutti. Vorrei porvi la seguente domanda.
Devo creare un programma per il trasferimento di dati su socket. Tuttavia
devo implementare il timeout sulla read per far si che non diventi una
funzione bloccante
Avrei usato questa serie di istruzioni per impostare il timeout direttamente
sul socket
struct timeval timeout;
  timeout.tv_sec=20;
  timeout.tv_usec=0;
if (setsockopt(sock,SOL_SOCKET,SO_RCVTIMEO,&timeout,sizeof(timeout)) < 0)
		err_sys("(%s) SO_RCVTIMEO setsockopt error...\n",prog);
eppure quando "blocco" la write del server ponendo una sleep(60) prima della
write stessa, la read in ascolto sul client non mi da errore e continua a
bloccare il programma fino a quando non legge.
Ho sbagliato qualcosa nel codice o nel concetto? Grazie a chiunque legga e
sappia aiutarmi
Simone
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 [CUT]
Da quel che vedo nel topic, sei OT, dato che i socket non appartengono 
allo standard C, argomento di questo newsgroup. Prova a chiedere su 
it.comp.os.linux.development.
-- 
Mat/tia Belletti             - Graduate student @ 
cs.unibo.it
ICQ: 33292311                - email: 
mbel...@cs.unibo.it
IRC: RedGlow                 - site(s): 
http://mbellett.web.cs.unibo.it/
Red...@jabber.linux.it/Gaim
 - Linux user 299762 @ machine 213003