mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c
Titolo: Stringhe di dati Esadecimali

Salve a tutti,
su una stringa di dati in rappresentazione esadecimale devo fare un pò di
calcoletti (fletcher checksums)... e questi calcoletti li gestisco senza
problemi se definisco un array di char in questo modo:
unsigned char stringa[]={0xA9 , 0xFA , 0x01 ...etc..etc..};
Un pò per sega mentale, un pò perchè la forma "reale" dei dati non sarà come
definito sopra, mi sono chiesto cosa accadeva se definivo la stringa come:
unsigned char *stringa="A9FA01F09C01812610A2917B";
Avevo pensato di scorrere la stringa e di memorizzare mano a mano gli
elementi in un buffer e di operare come già avevo fatto con successo:
int i = 0;
char buffer[20];
while (*stringa != '\0')
     {
     buffer[i] = *stringa;
     *stringa++;
     i++;
     }
     buffer[i+1]= '\0';
...ma ovviamente in questo modo
buffer[0]= A , buffer[1] = 9 , buffer[2] = F , etc..
mentre voglio che buffer[0]= A9 , buffer[1] = FA etc..
mi ci sto arrovellando ma non riesco a venirne fuori. Suggerimenti?
Secondo problemino: ammesso che riesca ad ottenere che
buffer[0]= A9 , buffer[1] = FA etc..
Come posso essere sicuro che i dati memorizzati in buffer[i] sono
rappresentativi di valori esadecimali?
Per farla breve, se dovessi sommare 0xA9 + 0xFA sono sicuro che fa 0xA3.
Cosa potrei dire della somma A9 + FA ?

 che fa 0xA3. Cosa potrei dire della somma A9 + FA ?
Potresti dire che la somma 0xA9 + 0xFA e` 0x1A3. Evidentemente a te serve il
byte meno significativo.
Ora in buffer ci sono dei numeri interi e li tratti come tali:
    somma = buffer[0] + buffer[1];
Devi far attenzione ad una sola cosa: in buffer ci sono interi che occupano
un solo byte di memoria. Se ti interessa il byte meno significativo della
somma è sufficiente che la variabile somma sia definita come char.
Maurizio.

Grazie Maurizio per le spiegazioni ;-)
Ho anche modificato leggermente il codice in modo tale che vengano scartati
eventuali spazi presenti all'interno della stringa:
/********************************************/
unsigned char *stringa="A9 FA 01 F0 9C 01 81 26 10 A2 91 7B ";
[....]
/* Scorro la stringa e memorizzo i valori in buffer */
 for (i = 0, p = stringa; *p != '\0'; i++, p += 2)
    {
/* Verifica che quello puntato non è uno "spazio" */
     if (*p!=' ')
     {
/* 2 caratteri di stringa nella variabile temporanea str */
     memcpy(str, p, 2);
     str[2] = '\0';
/* trasforma i due caratteri esadecimali in intero e mettili in buffer */
  sscanf(str, "%2x", comando + i);
     }
     else
     {
      i--; p--;
     }
 }
 comando[i] = '\0';
/********************************************/

Newsgroup: it.comp.lang.c
Titolo: Gestione Files

Sapreste dirmi dove trovare della documentazione sull'uso delle
funzioni C per i files,non naturalmente solo i prototipi e qualche
esempio ma proprio dei sorgenti(documenti) dove poter imparare bene a
gestire
la scrittura/lettura di files sia binari che ascii.
Grazie.

 wrote in message 9hajp1$uid$1...@news.ngi.it...

Newsgroup: it.comp.lang.c
Titolo: Multi-thread

Salve gente, qualcuno di voi saprebbe indicarmi se in rete c'è un po' di
materiale sulla programmazione multi-thread in c/c++ sia sotto unix/ che
sotto win.
Grazie

sotto win.
Allora, innanzitutto: qui sei OT: il C standard NON prevede il concetto di
thread, lock, esecuzione concorrente e così via.
Dopodichè, se hai un sistema in cui è installato info e le pagine info della
libreria standard C, prova a scrivere info libc e dal menù che ti compare,
sotto la voce Add-on, scegli POSIX Threads, oppure prova con man -K pthread
o qualcosa del genere.
Controlla anche il manuale di fork.
Sotto windows non saprei.
Lanugo



Ti basta cercare "multithread" su un qualsiasi motore di ricerca.
In ogni caso, se ti interessa la programmazione concorrente per Linux,
rivolgiti a it.comp.os.linux.development, se sotto Windows,
it.comp.programmare.win32.  Molto dipende, anche, da che ambiente di
programmazione utilizzi.

Newsgroup: it.comp.lang.c
Titolo: Sample REVERSE in VC++

Salve! Sono nuovo del NG, e avrei bisogno di un favore.
Qualcuno potrebbe mandarmi in privato l'esempio REVERSE incluso in MSDN?
Non lo trovo più e mi è indispensabile per capire il funzionamento
dell'editing audio a basso livello.
Grazie in anticipo a chi mi aiuterà.
Marco

 wrote in message
news:USFr7.31729$dJ3.3...@news1.tin.it...

Fatto... :-)
prox volta prova con un NG su win32...

Newsgroup: it.comp.lang.c
Titolo: Istruzioni decisionali

Ciao a tutti ho un problema un po banale,m non riesco a scrivere programmi
con istruzioni decisionali, qui vi scrivo un esempio e vi chiedo se lo
potete provare voi e mi dite il risultato.
#include <stdio.h>
int i;
main()
{
   printf("Dammi un numero intero: ");
   scanf("%d", &i);
   if(i<100)
       printf("Numero minore di 100");
   else
       printf("Numero maggiore di 100");
}
Potete vedere dove si trova l'errore, a mio parere mi sembra tutto esatto

perchè non ti funziona? che errore ti da? sul mio compilatore funziona
benissimo.

 wrote in message
tkxz9.14160$8E3.4...@twister2.libero.it...


Pianeta0 wrote:

Ti ha chiesto l'errore, non il compilatore... so che il VC possa essere 
pieno di bug, ma da li a considerarlo un errore ce ne passa :)
Visto che non tutti usano il Visual C, ma gli errori sono bene o male 
equivalenti, se ci dici che errore ti segnala possiamo darti una mano.
-- 
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."

non mi da più errori tutto risolto
Mox <m...@email.it.invalid> wrote in message
_Qzz9.14796$8E3.4...@twister2.libero.it...

Newsgroup: it.comp.lang.c
Titolo: far e huge

Da che  cosa sono stati sostituiti far e huge dato che il mio
compilatore non li riconosce?
Io uso Borland C++ Compiler 5.5
----
Lawrence "Rhymes" Oluyede
rhy...@myself.com

Non si usano più, infatti il tuo compilatore darà un warning del tipo
"Obsolete keyword".
Si utilizzavano far e near quando i compilatori generavano codice a 16 bit e
c'era il problema dell'indirizzamento di memoria superiore al 1° mega di
RAM.
Ora abbiamo compilatori a 32 bit che gestiscono automaticamente questo
aspetto del linguaggio.
In ogni caso alcuni compilatori mi pare mantengano qualche keyword (cmq non
standard, ma proprietaria del compilatore) che simula in qualche modo far e
near (non chiedermi perchè! ^_^).
Dome
--
------------------------------------------
Domenico Troiano
AI & 3D Coder TFS Project
www.panther3d.com
red...@panther3d.ath.cx
------------------------------------------

Newsgroup: it.comp.lang.c
Titolo: Stampare un long int

salve, 
 scusate la domanda banale, ma per stampare 
un long int cosa devo usare, se uso
printf("%i",variabile_long);
mi da un warning!!!
Grazie a tutti

un long int cosa devo usare, se uso
printf("%ld",variabile_long);

Newsgroup: it.comp.lang.c
Titolo: Programmare in dos sotto windows

Ho un problema,
uso ul compilatore Borland C++ 5.01 per programmare sotto dos.
E' sempre andato tutto bene e dando il run ai programmi, veniva aperta
automaticamente una finestra dos e funzionavano perfattamente.
Adesso quando provo a lanciare uno di questi programmi viene
visualizzato un messaggio di windows che dice che quella applicazione
non è configurata per essere eseguita sotto windows, che tutte le altre
applicazioni verranno chiuse e così via...
come devo fare, per favore se potete aiutatemi.
Ringrazio tutti
  Bart...

applicazioni verranno chiuse e cosě via...
Forse richiede troppe risorse di sistema? Prova ad ottiizzare il codice...
--
Francesco Trotta
http://space.tin.it/computer/ftrotta
Elimina "x_" dal mio indirizzo per mandarmi
un messaggio direttamente

>come devo fare, per favore se potete aiutatemi.
credo che tu abbia attivato nelle proprieta' o dei singoli file o di non so
piu' quale .pif in  '\windows' (dosstart o dosprmpt), al tag 'programma',
bottone 'avanzate' -> 'modalita' DOS'.
Se hai cambiato i file di '\windows', tutti i programmi DOS che lanci,
(cioe' anche quelli che non hai scritto tu), hanno questo difetto.
ciao
donCiccio
Newsgroup: it.comp.lang.c
Titolo: Urgente! Conversione esadecimale

Salve a tutti,
Ho un problema urgentissimo: Questa funzione di conversione di un numero da
esadecimale a decimale (i numeri sono contenuti in una stringa) funziona ma
mi genera qualche problema sui puntatori.
La funzione infatti viene richiamata all'interno di un ciclo for( i = 0
etc...
dopo la sua chiamata infatti mi accorgo che il contatore i assume valori non
corrispondenti
Qualcuno mi saprebbe dare qualche consiglio? Grazie anticipare!!!
Riporto il codice della funzione:
/**********************************************************\
 * Funzione per la conversione di un numero esadecimale:
 * stresa=stringa contente il numero esadecimale
 * strdec=stringa decimale di ritorno
 * Torna 0 se errore altrimenti -1
/**********************************************************/
int esadecimale(char *stresa, char *strdec)
{
int i=0,w=0;  // contatori
double dec=0;  // numero decimale convertito
int lung=0;   // lunghezza del numero da convertire
  lung=strlen(stresa)-1;
  if(lung<0) return 0;
  for (i=0;i<=lung;i++)
  {
    if(stresa[i]>='A' && stresa[i]<='F')
    {
      dec=dec+(stresa[i]-'A' + 10)*pow(16,(lung)-i);
    } else if(stresa[i]>='a' && stresa[i]<='f')
  {
   dec=dec+(stresa[i]-'a' + 10)*pow(16,(lung)-i);
  } else  {
     dec=dec+(stresa[i]-'0')*pow(16,(lung)-i);
    }
  }
  //printf("\nIL numero decimale e': %d\n",dec);
  //utoa(dec,strdec,10);
  sprintf(strdec,"%10.0f",dec);
  return -1;
}
-- 
Toglere #NOSPAM# dall'indirizzo
Cut #NOSPAM# to replay

 mi genera qualche problema sui puntatori.
... e usare strtol() e strtoul()?
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

dai un'occhiata qui
http://users.powernet.co.uk/eton/kandr2/krx203.html
Newsgroup: it.comp.lang.c
Titolo: stesso indirizzo?

In un programma ho scritto queste istruzioni...
//**********************************
char *p1,*p2;
  p1="ciao";
  p2="ciao";
  printf("%d %d\n",p1,p2);
//***********************************
e come output ottengo lo stesso indirizzo sia per p1 che per p2. Perchè?
Anche se le due stringhe contengono entrambe ciao, sono due stringhe diverse
e dovrebbero avere indirizzi diversi o sbaglio?
ciao

 e come output ottengo lo stesso indirizzo sia per p1 che per p2. Perchč?
io l'ho interpretato cosi' (probabilmente sbagliando):
p1 e p2 sono solo dichiarati e non allocati quindi, immagino che
punteranno a qualcosa o NULL.
poi fai puntare p1 a una stringa "ciao" che viene allocata(la stringa "ciao", non p1)
fai puntare p2 a una stringa "ciao" gia' presente e quindi viene messo
in p2 lo stesso indirizzo di p1 (tanto se esiste gia', perche' replicarlo?)
se volevi avere 2 puntatori diversi dovevi:
int len;
len=strlen("ciao")+1;
p1=malloc(len);
p2=malloc(len);
strcpy(p1, "ciao");
strcpy(p2, "ciao");
Ciao
-- 
Er Baitch
http://baitch.altervista.org/
-- Fortune of the day --
"I used to get high on life but lately I've built up a resistance."

 diverse e dovrebbero avere indirizzi diversi o sbaglio?
Sbagli. Possono avere indirizzi diversi, ma non devono. Lo Standard 
permette al compilatore di instanziare una sola volta letterali stringa 
identici. D'altronde, non essendo modificabili non ha senso sprecare spazio 
per mantenerli distinti.
Se compili con GCC con l'opzione '-fwritable-strings', che rende scrivibili 
i letterali stringa (comportamento *non* conforme allo Standard), vedrai 
che essi avranno comunque indirizzi diversi.
Nota: cerca non di prendere l'abitudine di assegnare letterali stringa a 
puntatori a char non-const. Questo è consentito per ragioni storiche, ma ti 
permette di compilare codice che in esecuzione avrebbe comportamento 
indefinito.
Max

 indefinito.
quindi è meglio usare qualcosa come char msg[100] invece di char
*msg="stringa lunga 99"?
e invece   *msg=malloc(100*sizeof(char))  va bene?

 
Ho detto soltanto di non usare puntatori a 'char non-const' per memorizzare 
l'indirizzo di un letterale stringa. Quando e se sia piů appropriato usare 
array o allocare con malloc č tutto un altro discorso.
Per capirci:
  char* p = "pippo";
  p[0] = 'P'; /* questo compila, ma l'operazione non č lecita */
 
  const char* p = "pippo"; /* nota il 'const' */
  p[0] = 'P'; /* questo *non* compila */
Max

 e dovrebbero avere indirizzi diversi o sbaglio?
Potrebbero averli diversi ma questa č una normale ottimizzazione che fa 
il compilatore. Poichč appunto le stringhe costanti sono rigorosamente 
read-only, non ci sono controindicazioni.
Newsgroup: it.comp.lang.c
Titolo: makefile

Salve a tutti,
la mia domanda č questa(forse un po fuori luogo, ma non sapevo dove
postarla):
dovrei compilare dei sorgenti di C a cui č allegato il relativo 
makefile. C'č qualcuno cosi' gentile da dirmi a grandi linee la 
procedura che devo eseguire per creare i programmi (dimenticavo di 
dire che sono molto newbie).
Grazie a tutti.
-- 
Posted from 62.98.11.9 by way of 
smtp1.libero.it
 [193.70.192.51] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG


I'm not prejudiced, I hate everyone equally.

Newsgroup: it.comp.lang.c
Titolo: FUNZIONE O NON FUNZIONE MINCHIA CHE PROBLEMA...

GRAZIE INANZITUTTO,
VORREI SAPERE COME MAI NEL CODICE SOTTO RIPORTATO QUANDO RICHIAMO LA
FUNZIONE SCRIVI MI ASSEGNA SUBITO IL PRIMO CAMPO DELLA STRUTTURA, HO PROVATO
ANCHE CON IL fflush(); MA NON HA FUNZIONATO... SONO DISPERATO
AIUTATEMIIIIIIIIIIIIIIIIIIII....
                                                        tripod_blee

 wrote in message
nnWz6.22639$wG3.1...@news.infostrada.it...

Newsgroup: it.comp.lang.c
Titolo: why there are no questions here?

why there are no questions here??

why there are no questions here??
*Who* are you ? This is an italian newsgroup and you're allowed to use
italian language only.  (The "it" in front of "comp.lang.c" stands for
"italian" and not "information technology" as you may have thought).
By the way, you question is quite dumb, either in italian or in
english.
-- 
Andrea Laforgia
www.geocities.com/andrealaforgia
"640kb of memory should be enough for anyone." -- Bill Gates.

Newsgroup: it.comp.lang.c
Titolo: debugger c per windows?

Ciao
Vorrei sapere se l'analogo in windows del debugger per il linguaggio C ddd
che si  trova sotto linux.
Se si', da dove lo posso scaricare?
Grazie

Se si', da dove lo posso scaricare?
Esiste per Cygwin, per gli altri compilatori (ho guardato DJGPP, DEV-C
e LCC) ho trovato solo il GDB (in alcuni casi con frontend grafici).
-- 
Mox

Newsgroup: it.comp.lang.c
Titolo: signal handler e code di messaggi

come fa una routine chiamata da un processo (e nella fattispecie l'handler
di un segnale SIGUSR1) a riferirsi alle strutture (semafori e/o code di
messaggi)
proprie del processo chiamante, ed agire su di esse?(es. scrivere un
messaggio sulla coda)?
come faccio a far conoscere alla routine l'id della coda o del semaforo
grazie in anticipo a chi potrà darmi una risposta


Gliele passi?
Qui siamo un po' OT perche' per risponderti dovrei scendere nei
dettagli del sistema.
Fondamentalmente giele devi passare in qualche modo, quindi passi un
certo parametro in cui dici espressamente l'indirizzo di queste
risorse condivise (oppure gli passi come parametro un qualcosa che
contenga gli indirizzi delle strutture dati condivise, che e' poi la
stessa cosa con 1 deferenziamento in piu').
Oppure fai in modo che il processo le acquisisca prima di "dividersi"
(forkare? creare un nuovo thread?  Scopriti da solo i dettagli, le
"differenze" e i metodi propri del sistema che usi oppure chiedile su
un ng proprio a un dato sisop).
<code>
struct _ris { ... } risorse_condivise;
int funzione_1(struct _ris * indirizzo_risorse_condivise);
int funzione_2(struct _ris * indirizzo_risorse_condivise);
</code>
Per l'altra soluzione non posso fornirti nessuna soluzione portabile,
ma se leggessi l'help circa le funzioni per creare un nuovo processi o
thread lo capiresti al volo :=)
Mox :)
Newsgroup: it.comp.lang.c
Titolo: Codice C/C++

Salve a tutti , sapete se e come e possibile
utilizzare del codice C e relativi file.h in programmi
scritti in C++.
Grazie a tutti
Ciao


Il modo "classico" è il seguente:
Dentro il file: "fileH.h"
#ifndef FILEH_H
#define FILEH_H
#ifdef __cplusplus
extern "C" {
#endif
void prova(int x); /* funzione C */
#ifdef __cplusplus
}
#endif
#endif
Dentro il file: "fileC.c"
Compilato in C, con "__cplusplus" NON definita:
#include <fileH.h>
void prova(int x)
{
    /* */
}
Dentro il file: "fileCPP.cpp"
Compilato in C++, con "__cplusplus" definita:
#include <fileH.h>
void some_fun(void)
{
    /* chiami una funzione C */
    prova(10);
}
Nel file .h c'è l'informazione che "prova(...)" ha bisogno
di essere trattata come funzione 'C' e pertanto
ha necessità delle convenzioni di collegamento
(e gestione dei nomi) del C e non del C++.
Quando chiami "fopen" (in un file C++) già
accade tutto questo.
Tipicamente le funzioni di liberia sono fatte in C.
Prova a vedere gli header di sistema.
--
Giorgio Silvestri
DSP/Embedded/Real Time OS   Software Engineer

ti ringrazio.
Ciao

Newsgroup: it.comp.lang.c
Titolo: generare numeri casuali

Salve a tutto il NG, avrei la necesità di generare numeri casuali tra 0 e
10. Come mi devo comportare?
Grazie mille.
        by E'S

 10. Come mi devo comportare?
Il sistema classico e` quello di prendere il resto della divisione tra 
il risultato della chiamata a rand e il numero 11.
-- 
Enrico `Trippo' Porreca

Enrico `Trippo' Porreca wrote:

Grazie mille, non ci avevo proprio pensato!
        by E'S

"No_name" <h2...@biggest-pc.reg> wrote in message
news:HtUAc.5736$
GQ3.1...@twister2.libero.it

2,9,1,8,.... :D
Guarda anche qui
http://www.library.cornell.edu/nr/bookcpdf.html
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG
Newsgroup: it.comp.lang.c
Titolo: Export variabile

Ciao a tutti
devo esportare una variabile nella shell bash.. Non sono riuscita a farlo da
dentro il mio codice con system("export var1=var2"), anche se mi resituisce
zero non la vedo poi quella variabile, ho letto che tale system() con e'
proprio cross platform.. Quindi mi sono salvata la mia variabile su un file.
Ora dal prompt della shell voglio aggiungere il contenuto di questo file
(una sola riga) come variabile, come posso fare? Avevo pensato qualcosa del
genere tanto x capire: export miavar= (tail miofile)
Aiuto!!
Grazie
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 genere tanto x capire: export miavar= (tail miofile)
Non puoi usare system, perchč systema avvia una nuova shell nella quale 
la variabile viene creata e poi distrutta all'uscita. Allo stesso modo 
non puoi farlo fare ad uno script, perchč anche lo script viene eseguito 
con una sotto-shell. Dunque devi trovare una funzione della tua libreria 
di sistema. Penso ci dovrebbe essere il comando "setenv" che fa quello 
che vuoi.
E.

 qualcosa del genere tanto x capire: export miavar= (tail miofile)
Da un programma in C non è possibile esportare una variabile di 
environment.   Puoi usare la funzione putenv() ma la variabile rimane 
nell'environment solo del programma e muore con la fine del processo. 
  Non è quindi possibile usarla all'esterno.
Se hai salvato la variabile ed il suo valore in un file nel formato:
VARIABILE="valore della variabile"
puoi metterla nell'environment con il comando da shell:
$ . nomefile	
oppure
$ source nomefile
In questo modo la variabile viene inserita nella shell corrente.
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   Registered Linux user #337974  < 
http://giovanni.homelinux.net/
 >

Newsgroup: it.comp.lang.c
Titolo: principio del minimo privilegio

Non mi è chiaro il principio del minimo privilegio
in C. Potreste chiarirmi le idee o darmi link per farlo? Grazie.

 ha scritto nel messaggio 
news:dddgc3$ju9$3...@marina.home.net.it...


Mi scuso per la poca chiarezza.
Ho trovato una dispensa in cui, circa la funzione:
"void bubbleSort(int * const size array, const int size)";
dice: "... il parametro size sarà dichiarato const per obbedire al
principio del minimo privilegio".

cosmopsis ha scritto:

Forse significa che una funzione non deve avere la possibilita' di 
modificare un dato che non ha realmente necessita' di modificare. 
Probabilmente size viene passato a un'altra funzione x() chiamata da 
bubbleSort() e il programmatore vuole essere sicuro che il valore che 
x() riceve non venga modificato da bubbleSort(). Questo secondo me... 
Comunque google cosa dice?
-- 
Devaraja (Xdevaraja87^gmail^c0mX)
Linux Registerd User #338167
http://counter.li.org


http://tinyurl.com/c7pw6


modificare un dato...
Fatto sta, e Andrea  e DevarajA hanno centrato il problema, vi chiedevo
se esiste una formulazione particolare di tale principio nella
programmazione in C.
Comunque mille grazie per il vostro interessamento.
Newsgroup: it.comp.lang.c
Titolo: read/write vs. fread/fwrite

Salve salvino! Ho un problema con queste funzioni: ho appena terminato
un programmino che usa un buffer per leggere un file e poi ricopiarlo in
un altro file, dopo aver effettuato delle operazioni di permutazione
sugli elementi del buffer. Quindi la dimensione del file di ingresso
risulta uguale alla dimensione del file di uscita. Il fatto e' che
usando sotto linux le funzioni read/write, tutto va che e' un piacere,
mentre sotto Dos/Win devo usare le funzioni fread/fwrite perche' la
dimensione del file creato risulta altrimenti modificata di circa 1%
della dimensione del file originario (valore molto approssimato e
variabile). 
Poiche' uso le funzioni con gli stessi parametri, quindi stesso buffer,
dimensione delle unita', numero delle unita', il loro comportamento non
dovrebbe essere identico?
Specifico che apro i file (nel caso di fopen() ) in modalita' binaria.
Uso linux con gcc (ma qui tutto bene), e win95 con djgpp.
Grazie per le eventuali risposte.
-- 
 Ciao, Luca.
 Reply to 
luca....@tiscalinet.it

Uso linux con gcc (ma qui tutto bene), e win95 con djgpp.
Cominciamo col dire che read/write appartengono allo standard POSIX,
ma non all'ANSI.
In secondo luogo, il comportamento delle due funzioni non e' uguale.
L'una (fread()) agisce ad alto livello, l'altra a basso livello.
L'una legge l'esatto numero di caratteri segnalato, l'altra legge *al
massimo* il numero di caratteri passatole.
Il DJGPP, a proposito di read(), afferma :
"This function reads at most LENGTH bytes from file FD into BUFFER.
Note that in some cases, such as end-of-file conditions and text
files,it may read less than the requested number of bytes.  At
end-of-file,`read' will read exactly zero bytes."
--
Andrea Laforgia
andrea_...@bigfoot.com

Newsgroup: it.comp.lang.c
Titolo: programmare un socket

scusate l'intrusione.
sono un programmatore (che parolona ;-) turbo pascal è ho da poco finito
un piccolo mail client. Fino ad ora per quanto riguarda la spedizione
della mail ho utilizzato il netcat. Ora vorrei però inserire all'interno
del codice una porzione che instauri il collegamento con la porta 25 del
server e che passi le istruzione contenute in un file.
Il problema è che in pascal una unit SOCKET esiste, ma è sconosciuta a
più, tantè che sulla rete ho trovato ben poche info.
Mi è venuto in mente quindi di includere nel programma una porzione di
codice in c che svolga il tutto. Ora, io di c sono moooolto ignorante,
c'è qualcuno che di voi che potrebbe aiutarmi srcivendomi tale porzione
di codice ?
Ciao e grazie.

 di codice ?
Utilizzando la libreria std dell'ISO C non si puo`, visto che non esiste
nulla per gestire un socket.
Se utilizzi linux hai gia` tutto quello che ti serve (per ulteriori info
it.comp.os.linux.development). Se utilizzi win devi appoggiarti a
qualche libreria esterna (di serie c'e` il winsock, passa su
it.comp.programmare.win32).
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
Se alla sera, dopo una strepitosa vittoria, guardandoti allo
specchio dovessi notare un secondo paio di palle, che il tuo 
cuore non si riempia d'orgoglio, perche` vuol dire che ti 
stanno inculando -- Saggio Cinese
Newsgroup: it.comp.lang.c
Titolo: Socket FreeBSD

Devo fare un'applicazione semplice client server tramite socket su FreeBSD. 
Volevo sapere se č possibile inviare tramite socket direttamente dei file 
oppure se devo inviare il contenuto dei file attraverso stringhe. 

 dei file oppure se devo inviare il contenuto dei file attraverso stringhe.
solitamente si usa l'accoppiata read()/write(), lavorando su blocchi di
dimensione variabile, tipicamente da 1024 a 32768 bytes, fai 1po' te.
Oppure puoi utilizzare sendfile() dove è disponibile (occhio comunque,
guarda bene con man).
Ciao
-- 
none

Volevo sapere se è possibile inviare tramite socket direttamente dei file[...]
Certo che si può.  Leggi le man page di send e recv.

 ha scritto nel messaggio 
news:k8lpo11h5og9hm9oc...@4ax.com...

Ho letto le man, ho provato a lavorare con  i puntatori ai file e non dà 
errori. Però sul file client non scrive nulla. Ora come ora stò inviando il 
contenuto del file tramite stringhe. Io volevo provare a leggere dal file 
sul server e scrivere direttamente su un file sul client. 

 sul server e scrivere direttamente su un file sul client. 
Non puoi scrivere direttamente un file!!! Devi avere un client che 
riceve e scrive il file.


 Ho letto le man[...]
Con le API di gestione dei socket tu puoi inviare e ricevere buffer di
dati (non necessariamente stringhe) di lunghezza arbitraria.  Tutto quello
che ti serve č sapere, lato client, quanti dati attendere (te lo deve
comunicare il server), leggerli e scriverli a blocchi su un file.  Piů
semplice di cosě si muore.
L'esempio che segue č Python:
http://www.python.org/doc/2.2.3/lib/socket-example.html
-- 
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: sintassi del c

salve; potreste spiegarmi con un po' di dettaglio che tipi di
variabili dichiarano queste due istruzioni e se ci sono differenze?
char (*p1)[10];
char *p1[10];
se possibile potreste farmi qualche esempio di uso?
grazie e ciao

char *p1[10];
array di 10 puntatori a caratteri.
-- 
Andrea Laforgia
#exclude <windows.h>

char *p1[10];
Qui hai un array di puntatori a carattere.
      +--+
pl  0 !  !  ->  "stringa che verra' allocata successivamente\0"
      +--+
    1 !  !  ->  "idem come sopra\0"
      +--+
  ~~~~~~~~~
      +--+
    9 !  !  ->  "vabbe'. ora hai capito\0"
      +--+
Nota: le stringhe non esistono per come hai dichiarato tu l'array...
devi provvedere successivamente ad allocarle oppure indicarle al
momento della dichiarazione con la sintassi solita: { "s1", "s2"}
Un esempio? Potresti implementare in questo modo il menu di un
programma... cosi anziche' scrivere direttamente le stringhe fai solo
un ciclo for di stampa
<CODE>
int i;
char * array[10] = {"stringa 1", /*qui ci stanno altre 9 stringhe*/ };
for (i=0; i<10; i++)
    printf("%s", array[i]);
</CODE>
Mox :)

Mox wrote:
 > <CODE>
 > int i;
 > char * array[10] = {"stringa 1", /*qui ci stanno altre 9 stringhe*/ };
Se non sbaglio, in questo caso le stringhe non si possono modificare,
un po' come nel caso:
char *s = "Non toccarmi"
O sbaglio?
-- 
Danilo Piazzalunga
Linux Registered User #245762 at 
http://counter.li.org
mailto:
leo-...@ibero.it

O sbaglio?
La stringa "Non toccarmi" assegnata cosi' non puo' essere modificata.
Il puntatore a carattere invece puo' essere riassegnato a piacere.
La stringa "Non toccarmi" dovrebbe rappresenta un array di caratteri
(quindi il puntatore al primo elemento), dichiarato const (quindi i
componenti dell'array non sono modificabili).
La sostanza e' tratta dal Koenig (p. 97 della versione in inglese), la
forma l'ho creata sul momento, quindi potrebbe essere imprecisa.
Questo spiega anche perche' sia lecita questa operazione (rif sempre a
pag. 97 del Koenig per chi mon mi credesse):
<CODE>
int i;
for (i=0; i<10; i++)
        printf("i: %d / stampa: %c\n", i, "0123456789"[i]);
</CODE>
Mox (definiscimi il piu' formalmente possibile la "delta cappelletto"
su un automa non deterministico con epsilon mosse... allegria :P)

printf("i: %d / stampa: %c\n", i, "0123456789"[i]);
                                   ^^^^^^^^^^^^^^^
Be', questo non c'entra molto col "constness" o meno degli
string literal.

Newsgroup: it.comp.lang.c
Titolo: Scusate l'ignoranza

Ciao a tutti,
scusate la mia ignoranza in materia;
1) nel linguaggio C che cosa sono e a cosa servono i simboli & e *
2) cos'è un offset e il seg:off
Grazie in anticipo a tutti coloro che risponderanno :-)

 2) cos'č un offset e il seg:off
Sulla seconda sono ignorante anch'io. Per la prima:
- & "estrae" l'indirizzo di memoria di una variabile. Se vuoi far puntare un
puntatore ad una variabile fai cosě:
int a;
int *pa;
.....
pa=&a;
- * serve a modificare il contenuto di una variabile conoscendo un puntatore
alla variabile stessa:
(dichiarazioni come sopra)
a=10;
pa=&a;
*pa=5;    // adesso a contiene il valore 5
ovviamente questo esempio non dimostra la potenza dell 'operatore * ma si
rende evidente quando vuoi modificare una variabile esterna ad una funzione.
Passi l'indirizzo della variabile alla funzione, puoi modificarne il
contenuto utilizzando *.
Questo č ciň che fai tutte le volte che chiami scanf() (le passi l'indirizzo
della variabile in cui vuoi memorizzare un valore. Questo spiega perchč usi
l'operatore & nelle chiamate a scanf )
ciao
Marco
--
Marco Coppo
University Of Sheffield
FAQ del gruppo: 
http://www.programmazione.it/linguaggi/c/itcomplangc.htm


Sotto ms-dos la memoria e' indirizzata tramite segmenti;
Un segmento e' un indirizzo di memoria,che puo' identificare uno spazio
che va da 16 bytes fino a 64 kb;
es: 0b800(segmento):0000(offset) = indirizzo iniziale buffer video
0b800:000a = indirizzo del 10° byte nel buffer video;
0b800:ffff = indirizzo dell' ultimo byte nel buffer video;
L' offset non e' altro che lo spiazzamento all 'interno del segmento.
Ivan Molella

0b800:ffff = indirizzo dell' ultimo byte nel buffer video;
                              ^^^^^^
In realta' il buffer video e' finito da un pezzo...
0xb800:ffff corrisponde all'indirizzo assoluto (0xb800 * 0x10) + 0xffff,
ossia 0xc7fff.
Saluti,
    Mardy


E' un bel po che non smanetto con l'assembler, pero' sono abbastanza sicuro
del fatto che se 0xb800 e' il segmento iniziale,il primo byte del segemento
lo identifico con 0b800:0000, l'ultimo con 0b800:ffff ;
Ivan Molella

lo identifico con 0b800:0000
Non in modo univoco, pero'.
Per es., anche b7f0:0100 identifica lo stesso byte.
Newsgroup: it.comp.lang.c
Titolo: Filtrare caratteri di punteggiatura

Salve a tutti, da premettere che arrivo dal php, e sto studiando il C
da pochissimo :D
praticamente vorrei che una stringa che comprende anche caratteri di
punteggiatura, venissero filtrati, cioè eliminati :D
volevo sapre se c' era una funzione per fare questo ?
o mi date qualche consiglio come fare ?
grazie . . .

 o mi date qualche consiglio come fare ?
ciao.
Direi che nella libreria standard una funzione del genere non c'e'.
Puoi realizzarla tu scorrendoti la stringa un carattere alla volta 
copiando il carattere nella stringa risultato solo se questo non e' un 
carattere di punteggiatura (c'e' la funzione ispunct() per verificarlo)
ciao
Giacomo

 Giacomo
ok grazie . . .  :)))


Oppure sfrutta la strtok usando i tuio caratteri come filtro per
eliminarli e poi unisci tutti i token risultanti in un unica stringa,
badando a non sovrascrivere i token nel frammentre ;-)
Brix

 frammentre ;-)
Vivissimi complimenti per il frammentre :-)

 Brix
grazie anche questo ottimo consiglio, lo proverò ;)

 Brix
ciao, scusa posso farti un altra domanda ?   per caso esite anche
qualche funzione che conosca se una lettera e una vocale o
consonante ?
grazie ciao . . .

 grazie ciao . . .
fai prima a crearti una cosiddetta funzione  IsVowel ... switch case 
sono tuoi amici :D

 sono tuoi amici :D
scusa ma non ti seguo :D, come potrei utilizzare questa funzione con
uno switch case ?  provo a vedere se ho capito, allora a me mi serve
poi contare quante consonanti e vocali ci sono, quindi,  mettiamo caso
che la funzione si trovi in un ciclo for, perchè come detto devo
scorrere tutti gli elementi nella variabile, allora switch(d[s])  case
"a" :  *q = d[s]   case "e":  *q = d[s]  ecc . . . penso avrai capito
cosa intendo no ?  :D
devo passare il risultato a qualche variabile contatore, quindi posso
utilizzare i puntatori in questo caso ?  può succedere che poi si
sovrascrive il buff ? oppure no ?
cmq. con i suggerimenti che mi avete dato fin' ora ho sviluppato
questo piccolo programmino, semplice:
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main()
{
int a;
char s[20];
scanf("%s",s);
for(a=0;a<strlen(s);a++)
if(ispunct(s[a]))
	printf("E una punteggiatura ed è luna %d \n", s);
else
	printf("non lo e\n");
return 0;
}
apparte il bof, che non mi interessa per adesso . . .   ok
ciauz e grazie ancora  :D:D:D:D
Newsgroup: it.comp.lang.c
Titolo: O.T.statistica

Ciao a tutti e scusate per l' O.T,
ma mi manca un esame e poi ho finito ( economia e commercio), e
purtroppo l'esame in questione è statistica.:(
Ho cominciato così a fare i primi esercizi.
Tra cui:
Lancio un dado , se il numero è dispari qual'è la probabilità che esso sia
primo?
a me viene 3/4 invece il testo dice 2/3
Qual'è la probabilità che abbia ragione io?
Vi ringrazio tanto
enrico

 Qual'è la probabilità che abbia ragione io?
La domanda e` malposta, oltre che essere OT. I numeri primi in un dado a 
sei facce sono quattro (uno, due, tre e cinque), per cui la probabilita` 
che tirando un dado esca un numero primo e` di quattro volte su sei 
(2/3). Pero`, considerando solo i tiri in cui esca un numero dispari, 
come sembra erroneamente suggerire la domanda, la probabilita` e`, 
ovviamente, del cento per cento, visto che l'insieme dei numeri dispari 
e` completamente contenuto in quello dei numeri primi.
Per completezza, se la domanda fosse stata "qual e` la probabilita` che 
esca un numero primo E dispari" la risposta sarebbe stata uno su due.
-- 
Baci,
Mony

 a me viene 3/4 invece il testo dice 2/3
a me 1

Qual'è la probabilità che abbia ragione io?
Nessuna come vedi (e, cosa piu' grave, anche il testo e' in
errore).  Le probabilita' che esca un numero primo, con un
tiro di dado, e' 2/3 (calcolato con la divisione 4/6, cioe'
il numero di numeri primi diviso il numero di facce) e di
questi, la probabilita' che esso sia dispari e' 2/3 * 3/4 =
1/2.
p.s.: sei **tremendamente** OT ! rivolgiti a
it.scienza.matematica.
-- 
Andrea Laforgia (
walkie...@libero.it
)
"Usenet is a strange place" [Dennis Ritchie]

un numero primo, la probabilita' e' 3/3 = 1.
ma 1 è un numero primo?

ma 1 č un numero primo?
io dico di si
č divisibile per uno? si
č divisibile per sč stesso? si
--
Lawrence Oluyede
rhy...@myself.com


dimentichi:
è divisibile per qualcun altro numero? no
;))

 E' sbagliata per caso la soluzione riportata dal libro?
Dai, è incredibile! Ho il tuo stesso problema ma sulle funzioni di
ripartizione e di densità condizionate.
Boh, vabbè. Dopo questa interessante notizia vengo al dunque, ricordando
che dalle illuminazioni ricevute circa 3000000 volte in questo NG, 1 non
può essere considerato numero primo.
Prob(A primo | A dispari)= Prob (A primo e dispari)/Prob (A dispari)=
= (2/6)/(3/6) = 2/3
Perché i due primi dispari sono 3 e 5.

 ma 1 è un numero primo?
No :)
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 
ma come no ? ogni tabella di numeri primi riporta:
1-2-3-5-7-11-13 ecc...

1-2-3-5-7-11-13 ecc...
No, i numeri primi sono maggiori di 1.


1-2-3-5-7-11-13 ecc...
L'uno veniva considerato come un caso particolare (assieme allo zero)
se non sbaglio, quindi a tutti gli effetti il primo numero primo e' il
2.
Ma siamo un tantino OT, io chiedere su it.scienza.matematica.
-- 
Mox
"Trust the programmer."
"Don't prevent the programmer from doing what needs to be done."
"Keep the language small and simple."
"Provide only one way to do an operation."
Newsgroup: it.comp.lang.c
Titolo: [OT] Unix Network Programming by W.R. Stevens

Salve,
a chi fosse interessato, vendo i due volumi dell'opera in oggetto a metà
del prezzo di copertina. I volumi sono in perfetto stato, appena ricevuti
da 
amazon.com
.
Se siete interessati, contattatemi in email.
Giulio
-- 
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: confrontare un puntatore ed un intero

Secondo lo standard mi sembra di capire che il seguente codice:
 
int main(int argc, char *argv[])
{
    const char  *p = "hello";
 
    if (p != 0) {
        return 0;
    } else {
        return 1;
    }
}
 
 
non sia valido.
 
Il problema è che GCC non emette warning, e non trovo una opzione per 
fargli emettere un warning in questa situazione.
 
C'è solo l'opzione Wextra per fare emettere un warning nel caso:
"A pointer is compared against integer zero with <, <=, >, or >=."
 
 
Se invece confronto un puntatore con un intero diverso da 0, GCC emette 
un warning di default.  Però sono abbastanza sicuro che lo standard non 
permetta 0 come caso speciale.
 
 
 
Grazie   Manlio

 permetta 0 come caso speciale.
 
Si invece, almeno nel C99 (vedi sopra)
 
Nota anche i seguenti paragrafi:
 
- An integer may be converted to any pointer type.
   Except as previously specified, the result is implementation-defined,
   might not be correctly aligned, might not point to an entity of the
   referenced type, and might be a trap representation.
 
Ovvero, e' anche 'legale' anche se implemetation dependend confrontare
un pointer con un intero (se no tonnellete di codice embedded non 
funzionerebbe per nulla!)
 
- Any pointer type may be converted to an integer type.
   Except as previously specified, the result is implementation-defined.
   If the result cannot be represented in the integer type, the behavior
   is undefined.
   The result need not be in the range of values of any integer type.
 
E' vero il veceversa: poso convertire un pointer in intero ...
 
AA.
 

 [...]
 
 
Ciao  Manlio

Newsgroup: it.comp.lang.c
Titolo: dev-C in italiano

Scusate dove posso trovare Dev c++ in italiano
Grazie

 Grazie
Dando per scontato che la lingua sia l'inglese:
menu Tools -> Environment Options -> Scheda Interface -> vai a
Language.
Opzione attivabile anche da setup.
ciao.

nibble wrote:

(risata a denti stretti)
-- 
www.iuz-lab.info
Newsgroup: it.comp.lang.c
Titolo: "keypressed"

Il mio problema e' il seguente: devo eseguire un ciclo fino a quando non
viene premuto un tasto qualsiasi.
mi ricordo che in Pascal c'era una funzione nella CRT chiamata "keypressed"
che ritorna true se veniva premuto un tasto qualsiasi , e si usava in
costrutti del tipo:
repeat
<corpo>
until (keypressed);
Mi stavo chiedendo se esistesse una funzione del genere in qualche libreria
del C, o se esistesse un modo per sortire lo stesso effetto.
Buon Natale e grazie in anticipo.
P.S.:come compilatore uso il GCC sotto Linux SuSE

mi ricordo che in Pascal c'era una funzione nella CRT chiamata "keypressed"
Attenzione, non in Pascal, ma in Turbo Pascal.
Il Pascal non possiede alcuna istruzione del genere, cosi' come il C
non ne possiede alcuna. Devi far riferimento al tuo particolare
compilatore. Il DJGPP e i compilatori Borland, per es., posseggono la
funzione kbhit() in conio.h.
es.: 
while ( !kbhit() ) 
{
   ...
}
--
Andrea Laforgia
andrea_...@bigfoot.com

 P.S.:come compilatore uso il GCC sotto Linux SuSE
Prova cosi':
#include <stdio.h>
#include <conio.h>
int main(void)
{
   printf("Premi un tasto per continuare:");
   while (!kbhit());
   printf("\nUn tasto e' stato premuto...\n");
   return 0;
}
Ivan Molella

#include <conio.h>
Temo che sotto Linux non sia supportato.
--
Andrea Laforgia
andrea_...@bigfoot.com

 P.S.:come compilatore uso il GCC sotto Linux SuSE
In Linux per la gestione della console (anche remote via VT100)
si usa ncurses
$ man ncurses
e' una interfaccia portabile che riconosce i vari tipi di terminali
collegati e li gestisce nel modo appropriato. Io non l' ho mai
usata e non ti so' postare codice di esempio.
Un modo per sapere se su un flusso di input ci sono dati disponibili
e quello di usare select
$ man select
e trovi anche un esempio direttamente compilabile. Studiare la
select fuori dal contesto delle socket di Barckley comunque e'
piuttosto rognoso. 
ciao e buone feste.

 wrote in message
83ttor$4hf$1...@nslave1.tin.it...
Toh... volevo chiedere anch'io info su keypressed, apro il newsreader e vedo
questo bel messaggio! Cmq io vorrei sapere un'ulteriore info:
mi sembra di ricordare (č qualche anno che non uso piů il TP7) che il Turbo
Pascal con una cosa del tipo
if keypressed then ch:=readkey   (o qualcosa di simile)
si poteva vedere anche qual'era il tasto che era stato premuto. In C č
possibile? Se sě, come?
Ciao e grazie!
Roger

 possibile? Se sě, come?
Dopo aver saputo che un tasto č stato premuto, basta una getchar(), e nomi a
parte č proprio uguale al TPascal
--
Alessandro Monti

until (keypressed);
Non si usava esattamente cosě:
si mette
"repeat until keypressed" prima dell'end. e lui continua a ripetere quello
che c'é tra begin e end.
Scusate l'OT di un "lurkatore" (si dice cosě?) che sta cominciando ad
apprendere il C!
Ciao
Matteo
http://kazuma.freeweb.org
Newsgroup: it.comp.lang.c
Titolo: WM_COMMAND e altro

Salve,
io avrei bisogno di sapere qual'è il messaggio da intercettare per sapere
quando l'utente scorre il mio menù. Con WM_COMMAND intercetto la selezione
ma come faccio a sapere quando passo sopra un menu contenente un submenu ?
Questo mi sarebbe utile perchè ad ogni menu dovrei associare una desc da
visualizzare in una status bar. L'utente si muove sui menu e visualizza la
desc.
E' possibile ??

...

Non ricordo precisamente quali siano le API, ma questo compito viene svolto
automaticamente da Win, non è necessario che sia tu a gestire i messaggi dei
menu.
Ciao, Giuseppe
---------------------------------------------------------------------------
_Guybrush su IRCNet canale #programmazione
---------------------------------------------------------------------------

Newsgroup: it.comp.lang.c
Titolo: riordinamento struct

Non riesco a trovare una soluzione per ordinare una struttura
alfabeticamente....
L'algoritmo che ho impostato è un bubblesort ed il programma pur girando non
esegue alcun ordinamento....c'è qualcuno che puo' aiutarmi?Allego il
programmino
Grazie...

Non riesco ad ordinare alfabeticamente una semplice struttura dati,
c'č qualcuno che puo' aiutarmi?Grazie.
Allego il programmino da me' svolto che gira,ma non esegue nessun
ordinamento...


Non dovresti allegare niente!....posta il codice invece...
Newsgroup: it.comp.lang.c
Titolo: funzione system()

salve a tutti volevo sapere come fare ad utilizzare un parametro che ho
all'interno del programma (un numero creato random) per aprire un nome di
file (nel mio caso wave) che abbia lo stesso nome. incollo uno stralcio di
codice x spiegarmi meglio:
[...]
int n;
srand(time(NULL));
n=(int)(5.0*rand()/(RAND_MAX+1.0));
system("play ..... .wav");  // qua vorrei far aprire il file n.wav (n+1)
[...]
il tutto naturalmente sotto Linux.
la mia domanda č come passare argomenti al programma, in questo caso,
play. grazie anticipatamente

 play. grazie anticipatamente
Costruisci la stringa con sprintf (o meglio snprintf, che e` disponibile
nel C99):
char cmd[128];
...
snprintf(cmd, sizeof(file_name), "play %d.wav", n);
system(cmd);
visto che sei su linux: man 3 sprintf
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
"Fare l'amore con dieci donne e` fantastico, soprattutto perche` ti
 presentano un sacco di amiche." -- Fabio Di Iorio

Newsgroup: it.comp.lang.c
Titolo: warning:assignment makes pointer from integer without a cast

Ho questo codice, che funziona perfetamente, ma il warning dell'oggetto:
char** funx (.....){
char* stringa;
char** array_string;
int i = 0;
stringa = (char*)malloc( (una costante...)*sizeof(char));
array_string = (char**)malloc( (un'altra variabile..)*sizeof(char*));
while( (fscanf(text,"%s",stringa))!=EOF )
-----> array_string[i++] = strdup(stringa);  <----
return array_string;
}
Se scrivessi cosě:
*array_string[i++] = strdup(stringa);
non avrei + il warning ma il programma non funziona....
Consigli?



#include <string.h>
leva il cast da malloc, (se ti da un warning anche lě vuol dire che non
hai incluso #include <stdlib.h>). 
sizeof(char) č sempre uguale a 1 quindi č superfluo
Ciao
Matic

 Matic
Ciao, grazie!!

 poi se lo gestisce lui....
malloc non "sa" nulla di quello che verra` memorizzato nell'area che ha
allocato. La questione di portabilita` non sussiste perche` *per
definizione* dello standard sizeof(char) e` pari a 1.
Luca
-- 
Home: 
http://kronoz.cjb.net
Se non sei parte della soluzione, allora sei parte del problema.

 lo strdup penso....
si questo lo so, ma tra i consigli che chiedevi ti davo anche quello di
levare ogni cast che hai fatto a malloc. 
Ciau
Newsgroup: it.comp.lang.c
Titolo: Parabolic Flight & Webcam

Ciao a tutti,
sto progettando un esperimento da far volare durante la prossima
campagna di voli parabolici dell'Agenzia Spaziale Europea (uno di quei
voli in areoplano a zero-g). Sarà un braccio robotico che si muove
inseguendo una sorgente luminosa esterna. Sull'estremità del braccio è
montata una webcam per acquisire e riconoscere il movimento della
sorgente e di conseguenza controllare il movimento del braccio.
Ora devo scrivere il software per leggere i frame provenienti dall
webcam e non ho la più pallida idea da che parte cominciare (come
background ho solamente un po' di esperienza in C, Pascal, Fortran e
Basic, ma non so assolutamente, ad esempio, come fare a "vedere" una
periferica in uno di questi linguaggi, tantomeno come una webcam invia
alla porta USB o parallela il suo segnale.
Ad oggi non abbiam ancora deciso nè quale webcam utilizzare, nè in che
linguaggio scrivere il software, quindi siamo completamente
flessibili... se c'è qualcuno che sa spiegarci come fare, darci
qualche dritta o indicarci dove chiedere... beh, grazie fin da ora!
Fabio

qualche dritta o indicarci dove chiedere... beh, grazie fin da ora!
Mah, nono ho capito bene... avete gia' deciso se tutto questo sara'
controllato da un computer (e mi sembra abbastanza ovvio, dato che
verra' utilizzata una webcam), oppure da un microcontrollore apposito?
Cmq, in questo ng sei sicuramente OT, a meno che non abbia problemi ci
C che riguardano argomenti standard, quindi no USB, no porte, ecc...
Io ti consiglio per prima cosa di decidere la base HW/SW, magari anche
chiedendo in un ng di robotica-elettronica, e poi, se decidessi di
utilizzare il C, di chiedere nel ng di windows
(it.comp.programmare.win32) se usi un PC con windows, nel ng di linux
(it.comp.os.linux.development) se usi un pc con linux, ecc...
Ciao,
Zeppe
Newsgroup: it.comp.lang.c
Titolo: Iniziare con la programmazione Win ...

Ciao a tutti , sono un novello del C (sto facendo con molta calma il  K&R)
e chiedevo dove posso trovare in rete documentazione relativa alla
programmazione sotto windows in generale (ho iniziato da poco)
--
Grazie e ciao a tutti
(Per favore rispondetemi anche in email)
-----------------------------
mg...@polbox.com
-----------------------------

...
