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

salve,
ho il seguente problema da risolvere,
partendo da 2 wave in formato mono 16 bit 44100
devo ottenerne uno in formato stereo 16 bit 44100
che contiene le due traccie dei file mono di partenza.
Conosco bene il formato RIFF wave PCM, il problema è che non posso leggere
i singoli sample (uno per uno) dei due wave di partenza e scriverli in
sequenza nelle rispettive traccie del file stereo finale, perchè il
processo risulta ovviamente molto lento (ci sono 44100 sample x ogni
secondo), ed in generale dovro' ripetere questa operazione su piu' file.
La soluzione migliore sarebbe quella di leggere blocchi di sample (ad
esempio 512 per ogni traccia mono) e una volta elaborati scriverli sul
file finale; le traccie stereo nei file wave PCM sono cosi' organizzate:
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

salve,
ho il seguente problema da risolvere,
partendo da 2 wave in formato mono 16 bit 44100
devo ottenerne uno in formato stereo 16 bit 44100
che contiene le due traccie dei file mono di partenza.
Conosco bene il formato RIFF wave PCM, il problema è che non posso leggere
i singoli sample (uno per uno) dei due wave di partenza e scriverli in
sequenza nelle rispettive traccie del file stereo finale, perchè il
processo risulta ovviamente molto lento (ci sono 44100 sample x ogni
secondo), ed in generale dovro' ripetere questa operazione su piu' file.
La soluzione migliore sarebbe quella di leggere blocchi di sample (ad
esempio 512 per ogni traccia mono) e una volta elaborati scriverli sul
file finale; le traccie stereo nei file wave PCM sono cosi' organizzate:
Left Channel (16bit) (file mono n.1) - Right Channel (16 bit) (file mono
n.2)
come posso creare tale struttura per i blocchi letti senza lavorare sui
singoli sample.
chi mi puo' auiutare ??
grazie.


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

qualcuno saprebbe dirmi come passare ad un programma sulla linea di comando
dei parametri ad esempio : ciao -a 1 -b 2 -c 3 ....
ciao e grazie.
--
Posted from 
jona...@stud.fisica.unipg.it
 [141.250.2.211]
via Mailgate.ORG Server - 
http://www.mailgate.org

 ciao e grazie.
con l'uso dei parametri della funzione main :
arcg e argv che sono rispettivamente un int ed un char *
main( int argc, char *argv[])
argc : numero di parametri.
argv il nome dei parametri
ciao
Maurizio

 dei parametri ad esempio : ciao -a 1 -b 2 -c 3 ....
Se usi Un*x dai un'occhiata a getopt().
Ciao ciao,
Andrea
-- 
"...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and 
 the Ugly)."
(by Matt Welsh)

Quando definisci il main devi scrivere
main( int argc, char *argv[]){
....
}
argc numero di elementi di argv
argv è un vettore di puntatori a carattere, ogni puntatore punta ad una
stringa contenente uno dei parametri, l'ultimo è un puntatore nullo.
ciao -a 1 "questa è una stringa sola"
argc è = 4     (se ricordo bene)
argv
 _
|_|-->"ciao"
|_|-->"-a"
|_|-->"1"
|_|-->"questa è una stringa sola"
|0|
--
________________________________
Togliete NoSpaM per rispondermi
bye Brain
Newsgroup: it.comp.lang.c
Titolo: Enciclopedia dei formati grafici, Jackson

Qualcuno ha acquistato il libro in oggetto ???
Prima di sprecare soldi vorrei sapere se contiene sorgenti C
ed info sui formati: AVI, MPEG-1, MPEG-2, PPM e YUV
(tutte le varianti) 
Ciao alla proxima...
BRUNO (
voy...@zuzzurello.com
)
SCAMBIO PROGETTI ELETTRONICI & SORGENTI C++BUILDER
http://www.floating.com/users/voyager/1.htm


Newsgroup: it.comp.lang.c
Titolo: input dati

Domanda:
volendo effettuare un INPUT dati in una forma  matriciale per righe e
colonne
senza usare spaziature ma utilizzando ENTER dopo ogni valore e
con una tabulazione automatica:
qual'e' il metodo migliore????
( io non ne conosco x ora nessuno:)
Grazie

AIUTOOOOOOOOOOOOO  :)

 ha scritto nel messaggio
news:M5%Oa.160397$Ny5.4...@twister2.libero.it...

Mi sa che in c standard non si fa.
Credo che tu ti debba appoggiare a delle librerie dipendenti dal S.O.
(argomento che quindi diventa OT in questo NG)
Ciao,
Ema

 qual'e' il metodo migliore????
Uhmm.
Tu in modo standard puoi richiedere un input all'utente di questo tipo:
    stringa[INVIO]
Se riesci a ricondurre il problema a questo puoi farlo.
Detto questo, se hai una matrice 4x3 vuoi che ti chieda qualcosa come:
    immetti il valore in posizione (1,1) => _
    immetti il valore in posizione (1,2) => _
    ....
    immetti il valore in posizione (4,3) => _
???
Probabilmente non ho capito, quindi prova a spiegare ulteriormente il
problema.
-- 
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."

Il mio problema e' quello di realizzare un programma per il calcolo di una
generica rete elettrica costituita da resistenze R e generatori  E J (  e
col  basic dell' APPLE ][ , nel lontano 83,  non ho avuto problemi  ;)
ora vorrei usare il C, mi rendo conto che con questo linguaggio sono ancora
una gran burba,
ma mi sto innervosendo in quanto non riesco a capire se esistono le
tabulazioni orizzontali in C :(
Da quanto ho visto negli esercizi disponibili in rete sul calcolo matriciale
una matrice si inserisce di solito con  input del tipo sequenziale
A(1,1)= ....
A(1,2)= ....
ecc
ma io vorrei un input  un attimo + complesso, del tipo:
 -> intestazione ->tabulazione sotto A B E R J -> inserzione valore e ->
"ENTER"
N   A   B     E      R       J
==================
1    ...    ...    ...     ...      ...
2    ...    ...    ...     ...      ...
3
4
ecc
Come diavolo si fa? : D


In ansi c quando inserisci una stringa e premi invio, il cursore va a capo.
Ciao,
Ema

 ha scritto nel messaggio
news:arlPa.163792$Ny5.4...@twister2.libero.it...



Con C standard credo non sia semplice, prova le estensioni di conio.h,
oppure cerca in rete le librerie ncurses.
meglio le ncurses :) almeno c'e' qualche speranza di portabilita'.
Newsgroup: it.comp.lang.c
Titolo: [semiOT]esiste ancora il programmatore in C "puro" ?

Quanti di voi programmano solo in C e non hanno mai imparato ad usare C++ ?
Io sono uno di quelli.
-- 
- -
  -

 
Io :)
Per il software embedded.
Per win mi sto innamorando di C# e del framework NET.
Ciao
Giuseppe

 Per win mi sto innamorando di C# e del framework NET.
Mi sono fermato al VB6
-- 
- -
  -

 
Da quello che sto vedendo, dato che anche io usavo VB6 per i programmi 
con interfaccia grafica su win, C# e' l'evoluzione naturale di un 
programmatore VB6.
Ciao
G.


Sei in buona compagnia.  Dove lavoro (sviluppo per sistemi telefonici)
siamo circa un centinaio e si usa esclusivamente il C.
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   Registered Linux user #337974  < 
http://giovanni.homelinux.net/
 >

 Quanti di voi programmano solo in C e non hanno mai imparato ad usare C++ ?
Io ho imparato e programmato abbastanza in C++ ma dove lavoro al momento
programmo esclusivamente in C, e così la maggior parte dei colleghi.
PS: embedded.
-- 
|_|0|_| - Salvatore Iovene
|_|_|0| - Website:  
http://www.iovene.com/
|0|0|0| - Key:      
http://www.iovene.com/pubkey.asc
------- - Webcomic: 
http://geekhero.iovene.com/

Newsgroup: it.comp.lang.c
Titolo: [niewbie]#Define e const

Salve a tutti
avrei un dubbio da niewbie da chiarire:
Che differenza c'è tra
#define A 1000
e
const int A=1000 ?
Grazie per le risposte
Paolo

 const int A=1000 ?
   Principalmente, appartengono a due linguaggi diversi e separati. Il 
primo idioma e` un'istruzione del preprocessore e serve ad indicargli di 
sostituire a tutte le occorrenze di A che incontrera` nel seguito con la 
costante intera 1000. Il secondo, invece, e` una definizione C che 
stabilisce che la variabile A e` di tipo intero, contiere il valore 1000 
chee non potra` essere modificato.
   Questo fatto, che appartengano a due linguaggi diversi, dovrebbe 
essere altamente esplicativo dell'uso che si debba fare dell'uno e 
dell'altro idioma, il che puo` essere solonicamente riassunto 
nell'aforisma: "Non si preprocessi cio` che e` del compilatore C, non si 
compili cio` che e` del preprocessore".
   Tuttavia, sui vantaggi e sugli svantaggi delle due forme (propendendo 
i vantaggi per la seconda e gli svantaggi per la prima) puoi consultare 
la letteratura di articoli di questo e di altri correlati gruppi di 
discussione: Google ti aiutera`. Tip: inserisci nella ricerca anche il 
costrutto enum, ti aiutera` ad avere un quadro ancor piu` preciso della 
situazione.
-- 
Alla prossima,
Marco

grazie :)
p.s dom ho la prova di LP1 aiutooooo :°(((
Newsgroup: it.comp.lang.c
Titolo: Operatori ++ e --

Ciao a todos,
Vivevo felice con le mie conoscenze C fino a quando non ho generato il
codice Assembler per un pezzettino di codice.
Il compilatore č il Visual C++ Versione 4.2, creo un programma DOS
(modello di memoria large) in modalitą di debug quindi nessuna
ottimizzazione.
La linea incriminata e' questa ...
  char *buf;     <- punta ad un'area valida
  long dato;    <- che dire, uno stupendo long :-)
  /* estraggo il byte basso del long */
  *buf++ = (char)(dato & 0x000000FFL);
  oppure  *(buf++) = ...
... ebbene la domanda e' perche' non viene fatta prima la
assegnazione e dopo il decremento?
Grazie per l'attenzione passo e chiudo.

assegnazione e dopo il decremento?
il tuo messaggio non mi e' chiaro, parli di codice assembly ma non ne
vedo, parli di decremento ma nel codice c'e' un ++...
Comunque lo standard e' abbastanza chiaro, prima viene fatto
l'assegnamento e poi l'incremento del puntatore, cos'e' che fi fa
pensare il contrario ?
Gianpaolo Bottin
- Live Long and Prosper -

pensare il contrario ?
Mi scuso per le inesattezze, ora chiarisco cosa chiedo:
voglio sapese come si comporta il codice sottostante ...
/* estraggo il byte basso del long */
*buf++ = (char)(dato & 0x000000FFL);
oppure  *(buf++) = ...
Secondo quanto so' il codice prima esegue l'assegnamento alla zona
puntata e poi l'incremento del puntatore.
Successivamente ho compilato il codice precedente (e' uno stralcio
di un mio programma!) e ho fatto generare al compilatore (Visual C++
Ver 1.52) anche il codice sorgente assembler.
Scorrendo il sorgente assembler ho notato che la istruzione sopra
(in ambedue i casi) genera un codice assembler che prima effettua
l'incremento e poi il decremento.
QUINDI LO STANDARD NON VIENE RISPETTATO?!?!?!?
Spero con questa di essere stato piu' chiaro.

Spero con questa di essere stato piu' chiaro.
ora e' piu' chiaro, ma ho ancora un dubbio: il programma funziona ? 
Perche' se il programma funziona vuol dire che e' solo un problema di
comprensione del listato assembly, altrimenti c'e' veramente un
problema di compilatore.

Newsgroup: it.comp.lang.c
Titolo: [OT] Messaggio per Maurus (IRC)

 quando sei su un server irc?
Non andandoci più forse?  eheheheheheh  ;o)
Beh. io uso una combinazione di 2 firewall; Conseal + @guard.
Stiamo parlando di due firewall con filosofie diverse:
mentre Conseal PC Firewall e' un firewall (come già detto) packet filtering
@guard lavora a livello di applicazione.
Visto che conseal lavora ad un livello piu' basso di @guard, filtro quello
che
mi interessa con conseal, e passo il resto ai "piani alti", cioe' ad @guard.
Cosi' posso, per esempio, controllare e gestire gli ICMP (che sarebbero i
tuoi
ctmp.... eheheheheheheh  ;o) scherzo, mi raccomando, non te la prendere!)
[cioe' posso condurre una vita  rilassante in IRC].   ;o)
Conseal probabilmente non ti ha aiutato perchè non hai saputo farti una
rules
adeguata e che sorvegli tutte le tue porte.
Mi scuso ancora per l'enorme OT, ma penso che questo discorso interessi +
o - tutti (non IRC, ma la sicurezza).
Alla prossima.
Ciao ciao.
=================================
       Bisogna saper scegliere in tempo,
         non arrivarci per contrarietà...
-------------------------------------------------
           Seeman79 ==> ©D@vide®
              COGITO ERGO SUM!!!
=================================

Ti ringrazio Davide per i tuoi saggi consigli,
vorra´ dire che mi installo anche io un doppio cane da guardia (Conseal +
ZoneAlarm potrebbero andare bene?).
Col mirc mi sono fatto mandare uno script che mi fa ignorare se mi mandano
piu´ di 4 ctmp in 10 secondi ed ora dovrei essere a prova di bomba (mai
dirlo!).
Comunque se ho ben capito tu fai filtrare al Conseal certi tipi di pacchetti
per farne gestire altri all´altro firewall, ma per quale motivo?
Se il Conseal te li filtrasse tutti non avresti bisogno di 2 firewall o no?
Per concludere, mi sapresti consigliare un newsgroup italiano dove si
trattano questi argomenti che per me sono sempre interessanti?
Ho trovato solo news.cultura.cybersocieta.lamer ma e´ abitato da zombies.
Grazie!

 Grazie!
Prego.
Alla prossima.
Ciao ciao.
--
================================
             Mind is like a parachutes;
             You have to keep it open!

Newsgroup: it.comp.lang.c
Titolo: "STREAM - LA TV SATELLITARE "

CERCHIAMO COLLABORATORI IN TUTTA ITALIA PER DIFFONDERE GLI ABBONAMENTI A
STREAM – LA TV SATELLITARE
METTERSI URGENTEMENTE IN CONTATTO  CON ALBERTO PIERACCI 0347/5207017
APIE...@IOL.IT

 
APIE...@IOL.IT
Ma non sai proprio nulla a proposito della netiquette che *vige* nei
newsgroup?
Cosa cavolo c'entra questa pubblicità?
E poi quell' "URGENTEMENTE"... ma cosa cavolo vuoi?
Mah...

forse vuole un programma che distribuisca abbonamenti a stream...
che ti lamenti a fare, sti lamer non capiscono comunque...
Andrea Massucco <non.mi@freghi> wrote in message
3760...@newsread3.dircon.co.uk...


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

Salve a tutti, mi serve il vostro aiuto: ho creato un programma che fa la
somma, e ho inserito un ciclo for che fa ripetere 5 volte la stessa cosa:
#include<stdio.h>
void main(){
int a;
int b;
int c;
int i=0;
for(i=1;i<=5;i++)
{
 printf("SOMMA\n\n");
 printf("Dammi il primo numero: ");
 scanf("%d",&a);
 printf("Dammi il secondo numero: ");
 scanf("%d",&b);
 c=a+b;
 printf("\nIl risultato della somma e' %d\n\n",c);
}
printf("Ciclo finito.\n");
}
La mia domanda č questa: Quando incomincia il secondo ciclo vorrei
cancellare la divisione del primo ciclo.
1°Ciclo
DAMMI IL PRIMO NUMERO: 4
DAMMI IL SECONDO NUMERO: 4
IL RISULATO DELLAM SOMMA E' 8
2°Ciclo
DAMMI IL PRIMO NUMERO:

cancellare la divisione del primo ciclo.
Non sono sicuro di capire cosa tu intenda per "divisione"... intendi
dire la stampa della parola "somma" all'inizio di ogni ciclo?
In tal caso ti basta togliere quella printf dal ciclo for, e metterla
subito prima del for stesso.

Newsgroup: it.comp.lang.c
Titolo: Struttura di funzioni

E' possibile fare una struttura di funzioni????
E poi come faccio a chiamre una funzione che è in una struttura???
     GRAZIE
     <<SAX>>
Per conttarmi togliere TOGLIMI dall'indirizzo email in firma
 
mail:linefin...@tiscalinet.it

E poi come faccio a chiamre una funzione che è in una struttura???
struttura.a(); /* stampa "Ciao "   */
struttura.b(); /* stampa "Mondo\n" */
Nota: mettere le parentesi tonde dopo il nome di una funzione
significa invocare la funzione; se non ci sono le parentesi tonde
semplicemente vai a leggere l'indirizzo della funzione (o se
preferisci un valore compatibile per essere assegnato al tipo
"puntatore a funzione").
-- 
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: 64 BIT

Salve, con i 16 bit se scrivevo int avevo 2 byte e per long int avevo
4 byte! oggi con 32bit se scrivo int ho 4 byte e short int 2 byte. Con
le nuove architetture a 64bit scrivendo int ho subito 8 byte o bisogna
scrivere long int per ottenerli? o forse con long into arrivo a 16? :)
grazie della delucidazione


Presumibilmente una macchina a 64 bit ha int da 64 bit, poiche' 
solitamente un int e` della dimensione di una word della macchina. I 
long secondo me restano comunque di 64 bit in genere.
In realta` tutto cio` dipende anche dal compilatore.
-- 
Enrico `Trippo' Porreca

 wrote


Concordo che in realta' tutto dipende dal compilatore, ma nella maggior
parte dei casi mi pare di notare che nelle macchine a 64 bits int definisca
un intero a 32 bits, e long a 64.
Nella macchine a 32 bits invece sia int che long sono interi a 32 bits e per
ottenere un intero a 64 bits bisogna invece scrivere long long.
Questo, long long, e' ovviamente una caratteristica del C99 che non molti
ancora usano.
Se l'OP si stava riferendo all'architettura AMD64 allora il vero vantaggio
di compilare per tale architettura non sara' tanto l'avere i registri di 64
bits, ma invece avere il doppio dei registri a disposizione! Poi per
applicazioni dove i 64bits sono importanti allora ovvio, sara' un vantaggio
avere anche i registri di 64 bits!
Tommy

 definisca un intero a 32 bits, e long a 64.
Anch'io ho notato che di solito č cosě... ma non č un controsenso ? Il tipo 
int non dovrebbe essere della stessa dimensione dei registri 
dell'architettura sottostante ?
Usare int dovrebbe consentire di scrivere codice "ottimizzato" per qualsiasi 
architettura, invece in questo modo l'unica alternativa č usare i tipi 
int_fast*_t di stdint.h...:(
-- 
LF

Newsgroup: it.comp.lang.c
Titolo: R: Primi passi col K&R...EOF?

quale sia il carattere che rappresenta EOF...
sul PC IBM (MS-DOS e windows) premi cotrol-Z per avere il carattere EOF
(0x26).
ciao
donCiccio

(0x26).
Deve essere pero' all'inizio di una riga.
Andrea Laforgia
----
I guai ve li andate a cercare : 
quando Bill Gates annuncio' che avrebbe fatto scrivere 
Windows98 a Topo Gigio perche' non gli avete creduto ?

>Deve essere pero' all'inizio di una riga.
e perche'????
in realta' la getchar() non legge direttamente il carattere che scrivi, devi
prima confermare l'intera linea con ENTER, e poi getchar() leggera' un
carattere per volta nella linea inserita. ^Z puo' essere in qualsiasi punto
ma purtroppo alla fine ci va sempre l'ENTER.
prova poi ridimmi
ciao
donCiccio

ma purtroppo alla fine ci va sempre l'ENTER.
Hai ragione.

Newsgroup: it.comp.lang.c
Titolo: DA LEGGERE ATTENTAMENTE

Ciao. Io non ho mai scritto su questo NG, ma sono già un paio di settimane
che lo frequento e devo dire che lo trovo alquanto interessante. Ammetto che
non ho mai trovato un posto (come questo) dove si parli così apertamente e
liberamente di sesso (oltre allo spogliatoio della mia squadra), anche se,
direte Voi, il titolo del NG doveva fartelo aspettare... Ho notato, però,
una caratteristica comune a tutti i post: il sesso è una cosa piacevole e
quindi è bello farlo e quindi è meglio farlo il più possibile e nelle
maniere in cui ti senti più appagato: benissimo, è un'ideale che condivido
pienamente e penso, quindi, che anche voi trovereste strano che qualcuno non
la possa pensare nello stesso modo. Ebbene quel "qualcuno" esiste ed è la
mia fidanzata!!!!!!!!! Lei ha 18 anni e io 20 e noi l'abbiamo fatto per la
prima volta due anni fa; inizialemente nessun problema... si teneva un ritmo
non elevato ma cmq accettabile; dopo 7 - 8 mesi, PATATRAC, abbiamo
cominciato a falo più raramente fino ad arrivare a situazioni estreme in cui
non ci siamo sfiorati per due mesi a fila; le motivazioni mi chiederete Voi?
Bè, ragazzi, ne ho sentite di ogni: oggi non mi sento, oggi ho voglia solo
di qualche coccola, no dai mi fa il solletico, oggi sono in sciopero... Cosa
ne dite????? Prima che Vi affrettiate a dire che ha unaltro io Vi posso dare
la totale certezza che lei è sempre e unicamente stata innamorata persa di
me.
Baudolno
=================
Stat rosa pistina nomine,
  nomina nuda tenemus
=================

 ha scritto nel messaggio
news:mXEd6.63233$ew1.3...@news.infostrada.it...


 ha scritto nel messaggio
news:mXEd6.63233$ew1.3...@news.infostrada.it...


 ha scritto nel messaggio
news:mXEd6.63233$ew1.3...@news.infostrada.it...


 ha scritto nel messaggio
news:q5Fd6.63353$ew1.3...@news.infostrada.it...


scusate ancora
lo abbiamo capito!
Ma un'altra volta stacci piu' attento ;)
Saluti

Non sono ne´ un guru del C, e nemmeno un guru della sessualita´ femminile,
ma posso azzardare l´ipotesi che la tua ragazza non sia piu´ innamorata di
te.
Mauro


The majority of the stupid is invincible and guaranteed for all time.
The terror of their tyranny, however, is alleviated by their lack of
consistency.
                -- Albert Einstein

 ha scritto nel messaggio
news:q5Fd6.63353$ew1.3...@news.infostrada.it...


Newsgroup: it.comp.lang.c
Titolo: righe di 80 caratteri...e fgets

Ciao a tutti, in un programma devo prendere da file righe da 80 caratteri al
massimo usando fgets...mi domandavo se devo allocare il buffer a 82 elementi
per tener conto del \n e \0 oppure no e limitarmi a 80...
Grazie 1000 per la disponibilità!
Enrico S.
--
Webmaster della Pagina NON Ufficiale del SonyCRX100
SonyCRX120,  SonyCRX140E/S, SonyCRX100EX, HP8100
HP8200, HP9100 & HP9200
http://www.freeweb.org/computer/SonyCRX100/

 ha scritto nel messaggio
news:9hf8eb$vg$1...@lacerta.tiscalinet.it...


 per tener conto del \n e \0 oppure no e limitarmi a 80...
direi di si.
con 80 avrai al massimo 78 caratteri utili + '\n' + '\0'.
ciao
donCiccio
Newsgroup: it.comp.lang.c
Titolo: problema con fputc

Ciao a tutti, ho un problema che mi sembra stupido ma non riesco a
risolvere.
Voglio prendere da una coda (con puntatori) i valori  (una cifra)
memorizzati un ogni cella e scriverli in un file, scrivo:
 /*Funzione per la stampa su file di una lista*/
     void stampa_su_file(struct nodo *lista,FILE *fp,char *nomefile){
         struct nodo *paus=lista;
         fp=fopen(nomefile,"w");
         fclose(fp);
         while (paus!=NULL){
              fp=fopen(nomefile,"w+");
              fputc(paus->cifra,fp);
              fclose(fp);
              paus=paus->prox;
                   }/*while*/
                              }/*stampa_su file*/
ma non funziona, cioč nel file non salva niente, o meglio non č leggibile
come serie di numeri (come dovrebbe essere).
Grazie a tutti per l'aiuto.
Giuseppe

               fclose(fp);
   Tralasciando il moto d'orrore che prende chiunque legga un brano di 
codice scritto in questo modo, che tipo ha il membro cifra? fputc() 
stampa un carattere--non bisogna farsi fuoriviare dal fatto che accetti 
un intero come parametro--sul flusso specificato. Se cifra non e` un 
carattere, chissa` cosa verra` venuto fuori...
<code>
	int
	print(struct nodo *lista,const char *filename)
	{
	    FILE        *fp;
	    struct nodo *aux=lista;
	    if((fp=fopen(filename,"wt"))==NULL) return 0;
	    /*                      ^
	     *                      |
	     * Text file! ----------+
	     */
	    while(aux->prox!=NULL) {
	        fprintf(fp,"%d\n",aux->cifra);
	        /*           ^
                  *           |
	         * Wow, an integer!
	         */
	        aux=aux->prox;
	    }
	    fclose(fp);
	    return 1;
	}
</code>
-- 
Alla prossima,
Marco

               fputc(paus->cifra,fp);
[...]
Oltre alla soluzione proposta da Marco, puoi usare
fputc(paus->cifra + '0', fp);
-- 
Saluti,
    Mardy
http://castellina.org/interlingua

 Marco
Alla prossima e grazie ancora. Giuseppe.

 non semplicemente con la fputc? Scusa, ma mi sfugge qualcosa.
   fputc() stampa un carattere identificato nella tabella utilizzata 
dalla piattaforma dall'indice intero che passi alla funzione. Se vuoi 
stampare A ed usi la codifica ANSI, passerai a fputc() il codice intero 
65 e lei stampera` A.
	struct nodo {
	    char        cifra;
	    struct nodo *prox;
	} node={
	    '4',
	    NULL
	};
	fputc(node.cifra,stdout);
   Se vuoi stampare un numero, foss'anche di una cifra sola, devi usare 
la funzione fprintf(), specificando nella stringa di formato che le 
passi che hai intenzione di stampare proprio un numero.
	struct nodo node={4,NULL};
	fprintf(stdout,"%d",node.cifra);
   Scegli tu.
PS Ti consiglio con una certa sollecitudine di studiarti attentamente un 
  qualsiasi manuale di programmazione in linguaggio C.
-- 
Alla prossima,
Marco

   qualsiasi manuale di programmazione in linguaggio C.
Accetto il consiglio, ho già un manuale ma non è approfondito nella
genstione dei files. Lo cambierò.
Grazie di tutto.
Giuseppe

 genstione dei files. Lo cambierò.
   Kernighan, Ritchie, "Il linguaggio C (Seconda edizione)", Jackson.
-- 
Alla prossima,
Marco


    Grazie per il consiglio.
  Giuseppe
Newsgroup: it.comp.lang.c
Titolo: Voglio vedere i task Attivi!!!!

Mi servirebbe un piccolo aiuto in un progetto che sto seguendo. Devo riuscire a leggere la lista dei task attivi in un sistema NT.
Piu' specificatamente mi occorre sapere se un certo programma (comando da console) e' in esecuzione.
Come ambiente di svilupo sto usando Visual C 4.2.
Grazie
Hermes
--
Posted from 
tron.marelli.it
 [139.128.18.2]
via Mailgate.ORG Server - 
http://www.mailgate.org

Guarda nei samples sul cd del VC++ 4.2
Adesso non mi ricordo esattamente ma dovrebbe esserci un programmino che dovrebbe chiamarsi qualcosa tipo TLIST (o similare) che ti fa
vedere un dialog con tutti i task che stanno girando. E' simile al "Task List" di OS/2 quando premi Ctrl-Esc.
GLL

Newsgroup: it.comp.lang.c
Titolo: Intero->stringa?

Ciao ragazzi , devo realizzare una funzione che permetta di scrivere un
intero di 4 cifre in un file , con un particolare formato.
Per esempio se  il numero č 111 devo scrivere 0111.
Per questo motivo si pone il problema di come isolare le singole cifre del
numero.
Qualcuno mi puņ aiutare?

Una idea l' ho avuta ma non capisco cosa ci sia che non va.
Riporto la parte di codice che mi da problemi :
#include<stdio.h>
#include<stdlib.h>
/*Definizione delle
variabili-------------------------------------------------*/
char *buf;
int num;
int i;
/*Definizione dei  prototipi delle
funzioni-----------------------------------*/
char Numeroalfa(int numero);
char *converti(int k);
/*Programma
principale--------------------------------------------------------*/
int main()
{
 printf("Introduci un numero  :  ");
   scanf("%d",&num);
   printf("\n%d",(int)num%10);
   buf=converti(num);
   printf("\n%s",buf); /*L' errore presumo si possa localizzare qui e nella
riga precedente :mi stampa caratteri strani*/
   getchar();
   getchar();
   return (1);
}
/*Definizione delle
funzioni--------------------------------------------------*/
char Numeroalfa(int numero)
{
 switch (numero)
  {
       case 1 : return('1');
         case 2 : return('2');
         case 3 : return('3');
         case 4 : return('4');
         case 5 : return('5');
         case 6 : return('6');
         case 7 : return('7');
         case 8 : return('8');
         case 9 : return('9');
         case 0 : return('0');
      }
}
char *converti(int k)
{
 char buffer[5];
   int temp=0;
   buffer[3]=Numeroalfa(k%10);
   temp=(int)(k/10);
   buffer[2]=Numeroalfa(temp%10);
   temp=(int)(temp/10);
   buffer[1]=Numeroalfa(temp%10);
   temp=(int)(temp/10);
   buffer[0]=Numeroalfa(temp%10);
   buffer[4]='\0';
   printf("\n%s",buffer);   /*Mi serve per verificare la correttezza */
   return(buffer);
}
Qualcuno mi puň aiutare??
Arrigrazie!


forse e' un po' spartana come soluzione, ma se tu sai già il formato con cui
devi scrivere sul file...
io avevo pensato una cosa del genere:
se le cifre da scrivere sono 4 fai un controllo sul numero letto, se è
minore di 1000 allora stampa zero,
se è minore di 100 allora stampa un altro zero, se è minore di 10 stampa un
altro zero, altrimenti stampa il numero. Certo questo presuppone alcune
condizioni, ma senza troppa difficoltà dovresti risolvere tutti i casi

 Per esempio se  il numero è 111 devo scrivere 0111.
Ma
    printf("%04d\n", num)
non ti va bene?
Maurizio.

 > Per esempio se  il numero č 111 devo scrivere 0111.


 Ma resta il problema di capire perchč il mio programma non funziona.
Questa, nella funzione converti(), sicuramente non va:
    char buffer[5];
perché buffer č una variabile locale e cessa di esistere nel momento in cui
esci dalla funzione. Quindi, dopo l'istruzione:
    buf=converti(num);
buf si trova a puntare a qualcosa che non esiste piů. Dovrai dichiarare
"static" la variabile buffer.
Maurizio.
Newsgroup: it.comp.lang.c
Titolo: numeri enormi

Ciao a tutti.
Qualcuno sa come posso fare operazioni su numeri del tipo 2^1000 e in che 
tipo di variabli posso memorizzarli?
Grazie mille.
Ciao

tipo di variabli posso memorizzarli?
Per 2^1000 dovrebbero bastare i double (arrivano fino a 2^1024, mi
pare) anche se perdi in precisione, solo la mantissa contiene numeri
significativi. Puoi usare una libreria esterna come GMP
(
http://swox.com/gmp
), prova
http://swox.se/cgi-bin/gmp_calc.pl?expr=2%5E100000
, dici che ti può
bastare?
-- 
Marco Barisione (ICQ 84277092)

Marco Barisione wrote:

si basta :) grazie mille
Newsgroup: it.comp.lang.c
Titolo: hardware installato

Qualcuno puo' consigliarmi come realizzare una procedura, meglio se in
C, per sapere quale hardware e' installato su un pc, in particolare tipo
di processore, di scheda video, ecc.
grazie mille
Potete rispondere a 
a_fag...@hotmail.com

di processore, di scheda video, ecc.
Individuare il tipo di processore e' un'operazione piuttosto
complicata.
Per gli Intel, l'algoritmo utilizzato per individuare i processori che
non supportano l'istruzione CPUID, consiste nel far eseguire loro una
istruzione che non supportano e verificare che sia eseguita
l'eccezione di Invalid Opcode.
L'Intel ha introdotto con ogni processore almeno una nuova istruzione
e cio' consente di agire in questo modo.
Questo algoritmo, tuttavia, non va bene per individuare l'8086/8088 in
quanto questi processori non supportano l'eccezione di Invalid Opcode.
Invece, per riconoscere la differenza tra l'8086 e il 80286 ci si basa
su un controllo del valore del registro SP salvato e recuperato dallo
stack.
I due processori, difatti, utilizzano un algoritmo di decremento di SP
diverso in fase di "push".
In quanto alla scheda video e alle altre periferiche prova a
consultare la Ralph Brown's Interrupt List, in cui puoi trovare
diverse informazioni utili.

 wrote in message
37746036...@diesel.cu.mi.it...


quindi modificare un indirizzo di salto a $+4 .
Ehm....quanti 8088 ci sono ancora in giro ???

Newsgroup: it.comp.lang.c
Titolo: indirizzi hardware

Ciao a tutti!
avrei bisogno di conoscere l'indirizzo hardware di alcuni file sull'hard
disk!
mi serve per sapere se quando li ho copiati sul disco, sono stati copiati
sequenzialmente oppure se sono sparsi qua e la!
come posso fare?
direi che un semplice
FILE* a;
printf("%0x ",&a)
non serva a nulla no?!
dal mommento che lavoro su un sistema Linux, non esiste un comando che mi
restituisca l'indirizzo hw del file?
il comando stat mi ritorna solo l'i-node!!
ciao e grazie se volete aiutarmi!
James.

 restituisca l'indirizzo hw del file?
Se OT, ma penso che non sia possibile in user-space.
f/up settato
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
ATTENZIONE: il mio indirizzo email e` cambiato, quello vecchio verra` 
disabilitato a breve.
Sono un mirabile incrocio tra Tarzan e Giacomo Leopardi.
In me convivono tutte le doti intelluttuali di Tarzan e
tutta la prestanza fisica di Giacomo Leopardi.
A. Borsani

Newsgroup: it.comp.lang.c
Titolo: chi mi aiuta????? :( operazione con i bit....

allora ho un programma che fa:
int stato,bit=6;
stato=1 |
(0x01<<bit);
se volessi fare il contrario:
bit=????
come si fa???
help please :)
(Se mi dite sapreste dire pure che fa questa operazione mi
fate un pioacere :)  )
ringrazio a tutti quelli che mi aiuteranno :)
ciao
Tommy
--------------------------------
Inviato via 
http://usenet.iol.it

Questo argomento è appena stato trattato.
Guarda l'oggetto:
"come si accede ai singoli bit di una variabile?" postato da Maschio il
18/01/02
troverai tutte le informazioni che cerchi!
Ciao
Alessio C
Newsgroup: it.comp.lang.c
Titolo: cgi-bin...

Qualcuno sa indicarmi dove trovare le librerie C che si occupano
dell'interazione con il web server?

Dipende dal server web o meglio dalla tecnica che il server preferisce:
ISAPI o NSAPI
La prima la trovi da Microsoft, la seconda da Netscape.
Oppure prova con un banale programmino CGI scritto come vuoi tu
Stefano

Newsgroup: it.comp.lang.c
Titolo: gestione memoria

Ho qualche dubbio sulla gestione della memoria dinamica. Le funzioni 
malloc e free (e simili) come fanno a sapere quali aree di heap sono 
gia' allocate? Tengono una tabella? Se si dove? E' una cosa statica del 
modulo in cui si trova il loro codice (ovviamente ogni programma ha la 
sua copia)? E per sapere dove inizia e dove finisce l'heap usano 
funzioni specifiche del sistema operativo?
-- 
Devaraja (Xdevaraja87^gmail^c0mX)
Linux Registerd User #338167
http://counter.li.org

 del sistema operativo?
Si', credo che non esista nulla di portabile da questo punto di vista.
 Ciao
 Federico

 funzioni specifiche del sistema operativo?
alle precedenti domande ti hanno già risposto...
volevo solo aggiungere che, dato che usi linux, la syscall per vedere dove
inizia e finisce l'heap è brk().
Fai magari un objdump -p nomefile | grep -A1 LOAD
Puoi verificare che brk(0) ritorna l'indirizzo dell'ultimo segmento+memsz.
Ciao
-- 
none

 
Ciao,
 forse confondi con sbrk ... "man brk" le descrive entrambe.
 Ciao
 Federico

Federico Zema wrote:
#define LINUX


effettivamente mi sono accorto adesso di una 'discrepanza', in quanto la
"sbrk" delle libc sarebbe la syscall "brk" del kernel (infatti mettendo 0
in ebx si ottiene il limite dello heap).
Ciao
-- 
none
Newsgroup: it.comp.lang.c
Titolo: Lettura a blocchi di un amatrice

Ciao a tutti,
ho una matrice MxN e devo dividerla e leggerla in blocchi di dimensione k x
k; qualcuno mi puň spiegare come potrei fare?
Ciao e grazie per l'aiuto.


Dove sta il problema ?
Allora se hai
double A[M][N], B[k][k];
se vale
M = mm*k; e
N = nn*k;
allora le posizioni del blocco (ii,jj)-esimo,
dove ii=0...(mm-1)  e jj=0...(nn-1)
sono
A[ii*k+i][jj*k+j]
dove
i=0...(k-1)
j=0...(k-1)
Quindi, per esempio, per copiare nella matrice B[k][k],
il blocco (ii,jj)-esimo basta fare
for (i=0; i<k; i++)
   for (j=0; j<k; j++)
     B[i][j]=A[ii*k+i][jj*k+j];
o se vuoi "leggerla" blocco per blocco
basta fare
for (ii=0; ii<mm; ii++)
   for (jj=0; jj<nn; jj++)
     for (i=0; i<k; i++)
       for (j=0; j<k; j++)
        {
           "leggi" elemento A[ii*k+i][jj*k+j];
        }
ciao,
g.
Newsgroup: it.comp.lang.c
Titolo: Generare numeri casuali (pseudo) in C compresi fra X e Y

Ciao a tutti, sto facendo le prime esperienze con le funzioni rand() e 
srand() . Avrei la necessità di generare numeri casuali compresi fra 48 
e 57. Il problema è che con questo banale codice ottengo sempre gli 
stessi numeri:
srand(3849);
     for(i=0; i<40; i++){
     while(a==0){
         RAN=rand()%57;
         if(RAN>48){
                 a=RAN;
                 printf("%d ", a);
         }
Come posso implementare una funzione che mi ritorni alla chiamata un 
intero casuale compreso fra 48 e 57?
	grazie anticipatamente, rz
-- 
                                    /TIDIRYUM - Ferrara - ITALY\
                                    \ICQ#    13901251   !!bye!!/
°°#1 Amilcare antifan°°

 
1) la srand() serve per inizializzare il generatore di
numeri casuali. Se lo inizializzi sempre passandogli
il numero 3849 e' ovvio che ottieni sempre gli stessi
numeri.
Se vuoi ottere una inizializzazione diversa ad ogni
run allora puoi includere <time.h> e scrivere
srand(time(0)); dove time(0) restituisce il numero
di secondi trascorsi dal 1 gennaio 1970 e quindi
ragionevolmente ti da un numero diverso ad ogni run.
2) francamente non capisco bene la funzione del
ciclo su a==0 visto che a non viene nemmeno inizializzato
o modificato nel ciclo! E non si capisce nemmeno perche' fai un ciclo su i !
In ogni caso l'idea di generare
dei numeri tra 0 e 56 e poi scartare quelli piccoli
puo' funzionare qui, ma diventa molto pericolosa se
per esempio vuoi generare un milione di numeri casuali tra,
per esempio,1 miliardo e 1 miliardo+134.
Se proprio (vedi sotto) vuoi usare l'operazione
modulo per generare i numeri casuali compresi tra
A e B (estremi inclusi !)
basta scrivere   A+(rand()%(B-A+1).
in questo modo quando il modulo e' minimo (0) ottieni
A+0 = A
e quando il modulo e' massimo (cioe' e' uguale a (B-A+1)-1 ottieni
A+(B-A+1-1)= B.
Se nel tuo caso (come sembra dal fatto che fai il test RAN>48)
e fai %57 gli estremi sono ESCLUSI, allora gli estremi inclusivi
sono 49 e 56 e quindi puoi porre RAN=49+rand()%8;
Nel caso la tua applicazione fosse "seria" e dipendesse in modo critico
dalla casualita' dei numeri estratti, allora dovresti sapere
che alcune funzioni rand() implementate su vecchie librerie,
non si comportano tanto bene sui bit "bassi".
La raccomandazione per ottenere una migliore distribuzione
dei numeri generati e' quella di non usare il modulo,
ma una divisione in double. Per esempio:
scrivere
j=1+(int) (10.0*rand()/(RAND_MAX+1.0));
per generare un numero intero j compreso (estremi inclusi)
tra 1 e 10.
ciao,
g.

 
		ciao, rz
-- 
                                   /TIDIRYUM - Ferrara - ITALY\
                                   \ICQ#    13901251   !!bye!!/
° °  associato #2 alla LAVPS2 ° °
Matrix - Messiah - Lisa INSTALLER
Newsgroup: it.comp.lang.c
Titolo: problemi con lettura files

Ho un problema da proporvi:
Supponiamo di avere uno spezzone di codice come segue,
flst = fopen ("papero/pippo.pluto", "r+");
perror("Pippo");
for (i=0; i<nentries; i++) 
	fgets(serv, SYSCMDSTR, flst);
rewind(flst);
....
Quello che succede č che, se elimino la chiamata a perror, quando il
codice viene eseguito lo stesso mi si blocca con un errore di accesso al
segmento di memoria. Se invece la lascio tutto funziona correttamente.
Ovviamente il file "papero/pippo.pluto" esiste, le stringhe vengono
lette correttamente, e cosě via...
Insomma, non riesco a capire cosa stia accadendo nel codice. C'č
qualcuno che ha qualche idea o qualche test da suggerire?
	Grazie,
		Stefano
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 segmento di memoria. Se invece la lascio tutto funziona correttamente.
Sembra  un  bell'esempio di  undefined  behaviour. Lo  spezzone che  hai
postato e` corretto, probabilmente il  problema e da qualche altra parte
ma si manifesta solo in quel punto.
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
"New processes are created by other processes, just like new
 humans. New humans are created by other humans, of course,
 not by processes." -- Unix System Administration Handbook
Newsgroup: it.comp.lang.c
Titolo: Funzione "palindroma" che non funziona

Ragazzi questo codice data una stringa di lunghezza max =20 dovrebbe darti 1
se la stringa è palindroma 0 se non lo è.
(Palindroma è una stringa che può essere letta ugualmente sia da destra che
da 
sinistra.es
. otto, abcba, uiiu,....)
Il problema è che ci ho sbattuto la testa per un giorno e non sono riuscito
a farlo girare. Chiedo cortesemente aiuto.
Grazie.
#include<stdio.h>
#define N 20
int palin(char s[N]);
main()
{
   int i;
   char s[N], c;
   clrscr();
   printf("Scrivi una stringa : ");
   for(i=0;(c=getchar())!='\n';++i)
      s[i]=c;
   s[i]='\0';
   palin(s);
   return 0;
}
int palin(char s[N])
{
   int i, j, cont=0;
   for(j=0;j<strlen(s);++j)
      for(--i;i>=0;--i)
         if(s[j]==s[i])
            ++cont;
   if(cont==strlen(s))
      printf("\n1");
   else
      printf("\n0");
   return 0;
}

 da 
sinistra.es
. otto, abcba, uiiu,....)
[...]
Usa un altro modo per acquisire la stringa.
int palin(char s[N])
{
    int i, j, len;
    len = strlen(s);
    i = len - 1;
    for (j = 0; j < len / 2 && s[j] == s[i]; j++, i--)
        ;
    return (j == len / 2);
}
-- 
Fabio   fabio161616(at)
libero.it
 blackmagic(at)
penguinpowered.com
 
Microsoft - Where the good job is v10.1 (?)


Anzichč nel main utilizzare quel ciclo for potresti utilizzare la funzione
fgets cosě :
fgets(s, 20, stdin);
per quanto riguarda la funzione palin potresti modificarla in questo modo ,
anche se poi non č l'algoritmo migliore:
void palin(char *s)
{
  int i, j, cont = 0;
  int dim = srtlen(s) -1;
  for(int i = 0, j = dim - 1; i < dim; i++, j--)
      if (s[i] == s[j])
         cont++;
 if(cont == dim)
   printf("1");
else
  printf("0");
}
Se vuoi una soluzione ricorsiva (avrai notato che mi piacciono tanto)  :
#include <string.h>
#include <stdio.h>
int polin(char *s, int j, int i = 0)
{
 if(j == 0)
  return 1;
 return (s[i] == s[j]) && polin(s, --j, ++i);
}
int main()
{
 char stringa[20];
 fgets(stringa, 20, stdin);
 if(polin(stringa,strlen(stringa) - 2, 0))
  printf("OK");
 else
  printf("NO");
 return 0;
}
te lo data solo per esercizio , ma non č comunque la soluzione migliore,
come mi hanno spiegato gli altri l' ultima volta.
Al
Newsgroup: it.comp.lang.c
Titolo: Sempre strutture e puntatori...

Ragazzi,
io ho provato a fare come avete scritto voi... ma se ne va sempre in
segment fault!!!
Oppure non funziona!
Come mai?



correzzione...
riesco a farlo cosi'
typedef struct _prova
{
  int ll;
} p_a;
----
int main(void)
{
  p_a *pP;
  pP->ll=2;
etc etc
}

 wrote in message
news:pan.2002.12.18....@libero.it...


 - Whereisit :

La snippet che ti ho scritto io compila e funziona con -ansi -Wall su
GCC quindi funziona.
Il segfault capita se non allochi correttamente la memoria, ripostaci
ciò che hai fatto che te lo facciamo funzionare.
Ciao,
-- 
oOO()             |Nicholas Wieland|
/ _/              |nicholas_wieland|
|/ [ Step on the ]|    @
yahoo.it
   |
\_)[  right foot ]|________________|

  }
In questo caso però non è un puntatore alla struttura ma una struttura:
----prova.h----
#include <stdio.h>
typedef struct mystruct {
  int value;
} MyStruct;
----prova.c----
#include "prova.h"
int main( void )
{
  /* struct mystruct *structPtr; 
     oppure */
 
  MyStruct *structPtr;
  structPtr->value = 20;
  printf ( "%d\n", structPtr->value );
  return 0;
}
 
Ciao


 }
C:\>iao Angelo
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 è la stessa cosa che fare :
avevo fatto solamente un copia ed incolla da un'editor da console x questo
e venuto cosi'!

 C:\>iao Angelo
Ciao,


  structPtr->value = 20;
Errore gravissimo non aver allocato memoria per il puntatore.

Non dovrebbe. Dovrebbe avere lo stesso identico comportamento.
Niente affatto.

GCC quindi funziona.
Il tuo snippet, se funziona, funziona per caso.

 malloc().
In effetti pensandoci hai ragione: evidentemente non ho letto con
attenzione il capitolo del K&R2, che dichiara un puntatore a una
struttura che successivamente inizializza con una chiamata a funzione
che mi era sfuggita.
Grazie.

Newsgroup: it.comp.lang.c
Titolo: [?]Info sulle funzioni

Salve a tutti , vorrei sapere alcune cose .
Se dal main chiamo una funzioneA(); , questa può chiamarne un altra "
funzB();"  la funzB può chiamare
un altra funzC(); , che poi ne chiama un altra a cui passa un char e un int
, la quale chiama ecc. ecc.
int funzC(int a, char []);
main(){
a=funzA();
}
void funzA(){
chiama funzB();}
void funzB(){
chiama funzC();}
funzC(){
 chaima funzD(int a, char []);}
Grazie
Ciao  Roberto

Salve a tutti , vorrei sapere alcune cose .
si....... puoi fare tutto quello che vuoi,
nei limiti dello stack e della memoria
cod

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

Newsgroup: it.comp.lang.c
Titolo: domandine varie

salve
visto che non ho una buona documentazione vi faccio qualche domandina
spicciola su C (ambiente Linux)
- per convertire un intero in stringa ?
- per testare se una stringa è un numero? (ciclo carattere carattere e uso
isDigit o c'è di meglio?)
- il "man" di linux non dovrebbe avere ache la documentazione del C (se si
come ci accedo? la devo installare appositamente?)
Grazie

 come ci accedo? la devo installare appositamente?)
Si' - come la installi dipende dalla distribuzione che usi, ma non 
chiedere qui, dove saresti OT, bensi' su it.comp.os.linux.development.
-- 
Mat/tia Belletti - Undergraduate student @ 
cs.unibo.it
ICQ: 33292311    - email: 
mbel...@cs.unibo.it
IRC: RedGlow     - site(s): 
http://mbellett.web.cs.unibo.it/
Linux registered user 299762 @ Linux registered machine 213003

Newsgroup: it.comp.lang.c
Titolo: scrittura concorrente file in c

Ciao, sto facendo un programma (c su linux) in cui vari processi vanno a
scrivere/leggere su un file, prima di fare tutto il lavoro di
sincronizzazione volevo sapere se magari c'era già una gestione automatica
della scrittura lettura su file... Io credo di no ma su un post avevo
letto nn mi ric quando qualcosa del genere.
Se non c'è la gestione automatica che strategia mi consigliate di usare?
Grazie
Jack_the_red :)

 Se non c'è la gestione automatica che strategia mi consigliate di usare?
E' il problema dei lettori / scrittori...
troverai dozzine di implementazioni in rete... alcone meglio di altre.
cerca con google.
-- 
ciao, Mirco.
[ 
http://hellspawn.dnsalias.net/~mircomir/
 ] [ Icq#:51640305 ]
[ 
http://pido2.webhop.net/
 ]

"Jack" <jackt...@NOSPAMMERSinwind.it> ha scritto nel messaggio
news:pan.2003.06.02....@NOSPAMMERSinwind.it...

Libro:
Sistemi Operativi
di
Andrew S. Tanenbaum e Albert S. Woodhull
edizioni Utet
pagina 81
e troverai ciò che ti serve, ci sono pure un paio di implementazioni :)
Newsgroup: it.comp.lang.c
Titolo: richiesta per ANSI C

sapreste gentilmente fornirmi un indirizzo dal quale poter scaricare
gratuitamente l' ambiente di sviluppo ANSI C

 gratuitamente l' ambiente di sviluppo ANSI C
Non esistono ambienti di sviluppo ANSI C ( ed e' anche in disuso la
dicitura ANSI dato che ora la standardizzazione del linguaggio C e'
affidata all ' ISO, quindi si parla di standard ISO C),ma compilatori
aderenti allo standard C.Tutti (o quasi) i compilaori C/C++,supportano
lo standard C,l'unica differneza tra l'uno e l'altro sono le varie
estensioni al linguaggio/libreria  per supportare cio' che lo standard
di per se non supporta.
www.delorie.com
:
qui' trovi il djgpp il porting sotto dos dello gnu-c.
--
Ivan Molella
__LINUX__ the choice of the __GNU__ generation
icq# 97960484

Newsgroup: it.comp.lang.c
Titolo: passare parametri in chiamate system

ciao a tutti,
non sono un esperto per cui se scrivo stupidate perdonatemi: vorrei solo
sapere se e come č possibile passare un parametro in una chiamata di
sistema tramite system. Mi spiego meglio ad esempio se da un programma
in c voglio eseguire uno script mio.sh posso usare
system("...../mio.sh");
ma se a mio.sh voglio passare un parametro che puň variare?...posso far
sě che il parametro passato da linea di comando al programma in c
diventi il parametro passato allo script?
ovviamente 
system("..../mio.sh argv[1]");
non mi 'risolverebbe' nulla.....
come posso fare???
grazie
Newelski
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 writes:
  LN> system("..../mio.sh argv[1]");
  LN> non mi 'risolverebbe' nulla.....
  LN> come posso fare???
puoi usare sprintf per ottenere la stringa da passare a system():
sprintf("/path/mio.sh %s", argv[1]);
oppure, visto che sei su un sistema unix, usi una delle funzioni della
famiglia exec. man execl per maggiori dettagli.
ciao,
nico

 nico
:))
ciao
Matic

 
Se invece vuoi fare un qualcosa magari con un po piu di codice usa la 
strcat() . Concateni le stringhe 
Ricordati di dare uno spazio tra la prima stringa e l`argomento passato da 
linea di comando.
Newsgroup: it.comp.lang.c
Titolo: rand() e RAND_MAX

dunque in C gli int possono essere usati come boolean!...
mi aiutate a capire il codice seguente.. considerando che "rand()" e
RAND_MAX
non sono funzione del programma ne vaiabili,
dunque sono funzioni/variabili  ambiente GCC
/* select a random training : i = (int)(NUMTRAIN*rnd), where 0<rnd<1 */
   i = (int)(NUMTRAIN*(float) rand() / RAND_MAX);
Grazie:)

 esempio di applicazione che fa al caso tuo.
Devo convertire in Java un sorgente trovato in rete compilabile con GCC ....
(fatto!)
Grazie della conferma:)
Oxy

dunque in C gli int possono essere usati come boolean!...
Ti diro' di piu': ogni tipo puo' essere usato come boolean:)
Questo comprente interi, caratteri, puntatori, numeri in virgola
mobile (anche se questi ultimi in modo in genere inatteso, quindi si
preferisce evitare).
Le regole di interpretazione sono queste:
- tipi aritmetici: tutti i valori possibili sono considerati TRUE, ad
accezzione del valore 0 (sequenza di bit tutti a zero), che viene
considerato false.
- puntatori: il puntatore NULL viene convertito al valore aritmetico 0
(che si interpreta come detto sopra), tutti gli altri valori possibili
vengono assunti come true.
-- 
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."

 vengono assunti come true.
grazie, in futuro potrebbe essermi utile saperlo :)