mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c
Titolo: Definire Transfer Size

Ho da poco acquistato una memoria usb della Lexar in cui erano dichiarate velocità di scrittura elevatissime.
Non fidanomi ho anche usato un programma test sotto windows (ATTO) in grado di testare le velocità di scrittura.
Il risultato di questo test è stato che se riesco a definire un "Transfer Size" di almeno 64k potrei arrivare a velocità di 30MB/sec.
 
La domanda allora è la seguente: come posso definire in un programma c sotto linux il transfer size?
Premetto che cercando su internet sono giunto all'istruzione setvbuf ma devo averla usata male perché non sono riuscito a giungere alla velocità di scrittura sperata.
In particolare (mantenendo l'essenziale):
 
char *buff = (char *)malloc(sizeof(char)*65536);
FILE *fp = fopen("nomeFile.bin","wb");
setvbuf(fp, buff, _IOFBF, (size_t)65536);
 
fwrite(   );
fwrite(   );
fwrite(   ); etc.
 
Grazie per qualsiasi suggerimento

 Grazie per qualsiasi suggerimento
 
Questa è roba che solitamente gestisce il kernel. Scrivi come se non sapessi
nulla. Ti potrai forse preoccupare solo dopo che avrai fatto profiling e avrai
capito che il problema è lì.
 
Ciao!

 Ciao!
 
Io in effetti scrivo come se non sapessi nulla solo che ho una scheda che genera un flusso di 15,36MB/s e il processo va in overun.
Posso fare allora qualcosa a livello di kernel?
In altre parole come fa l'applicativo ATTO a testare questi flussi?
Essendo Microsoft e' differente?
Grazie.


 
Per queste due domande non ho certezze ma solo una vaga idea, quindi passo.
 
 
Ciao!

Grazie per qualsiasi suggerimento
 
Tempo fa avevo fatto un qualcosa di simile giusto perché non sapevo
come passare il tempo, magari può esserti utile.
Link: 
http://myunfinished.work/cmdline/index.php?page=4&media=pc
 
-- 
andrea - ri mi cci, name

 programma c sotto linux il transfer size?
 
In fin dei conti si tratta della dimensione del buffer? Se si,
sotto Linux hai il comando `dd` che accetta come parametro la
dimensione dei blocchi (esempio: `bs=512`) e il numero di blocchi
da trasferire (esempio: `count=1024`).
 
…se poi vuoi scrivere il tuo programmino perché ti diverte,
allora è un'altra storia :)

Newsgroup: it.comp.lang.c
Titolo: Operazioni Bit a Bit

ho fato un programma che gestisce le operazioni bit a bit
ma non mi funziona in fase di eseguzione io uso visual c++ 6.0
premetto che non sono un esperto anche se ve ne siete accorti :-)
se ci sono dei siti inerenti fatermi sapere
grazie a tutti in anticipo
enrico

 wrote in message
kwVE6.81149$s93.7...@news.infostrada.it...

Newsgroup: it.comp.lang.c
Titolo: info manipolazione file

Dovrei scrivere velocemnete un programmino senza troppe pretese che, data
una directory, cambi il nome a tutti i file presenti in essa secondo una
stringa predefinita dall'utente. Ciň che io non so fare č appunto cambiare
il nome ai file e come spostarmi tra le directory.
Lavoro sotto dos, windows (tramite prompt del dos, non ho bisogno di gestire
i file con nomi lunghi) e linux
grazie a tutti :-)
San Vegeta

 tra le directory.
$ man rename
$ man opendir 3 readdir closedir
Ciao ciao,
Andrea
-- 
"...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and 
 the Ugly)."
(by Matt Welsh)

i file con nomi lunghi) e linux
Per la rinominazione dei file puoi usare la funzione standard
"rename".
In quanto alla navigazione tra directory, il seguente programma,
scritto per comp.lang.c in DJGPP, ti dovrebbe aiutare :
/* SCANTREE.C - DJGPP  */
/* Andrea Laforgia     */
/* 04/07/1999          */
#include <stdio.h>
#include <dos.h>
#include <dir.h>
static unsigned dir_level = 0 ;
static unsigned dir_count = 0 ;
int is_valid_directory( struct find_t dir_info )
{
    return ( ( dir_info.attrib & _A_SUBDIR ) &&
 
dir_info.name
[0] != '.' ) ;
}
void scan_tree( const char * dir )
{
     struct find_t dir_info ;
     unsigned result ;
     char buffer [MAXPATH] ;
     chdir( dir ) ;  
     ++dir_level ;
 
     getcwd( buffer, MAXPATH ) ;
     puts( buffer ) ;
     ++dir_count ;
     result = _dos_findfirst( "*.*", _A_SUBDIR, &dir_info ) ;
     while ( ! result )
     {
           if ( is_valid_directory( dir_info ) )
              scan_tree( 
dir_info.name
 ) ;
           result = _dos_findnext( &dir_info ) ;
     }
     if ( --dir_level ) chdir( ".." ) ;
}
int main( void )
{
   char buffer [MAXPATH] ;
   getcwd( buffer, MAXPATH ) ; /* save working directory */
   scan_tree( "\\" ) ;
   chdir( buffer ) ;  /* restore working directory */
   printf( "You have %u directories on your disk.\n", dir_count ) ;
   return 0 ;
}
--
Andrea Laforgia
andrea_...@bigfoot.com
Newsgroup: it.comp.lang.c
Titolo: Cicli annidati ...

Devo leggere da due file e verificare se esistono tra loro delle 
corrispondenze.
Alla fine stamparle a video.
I file hanno la seguente formattazione:
File 1:
GHC    ROMA
HCC    BOLOGNA
NHJ    MILANO
JKI    PALERMO
File 2:
JKI    GHC
GHC    NHJ
HCC    GHC
GHC    NHC
Su input dell'utente, verifico la corrispondenza nel file 2,
se verificata devo associare il nome del file 1 e visualizzare una cosa del 
genere:
Input utente: HCC GHC
--> BOLOGNA - ROMA
Avevo pensato a due cicli annidati del tipo:
for(k=0;k < h; k++) //scorro il file 1
{
    for (l=0; l < i; l++) //scorro il file 2
    {
        if (strcmp(par, sa[l].cod1)==0 && strcmp(des, sa[l].cod2)==0)
        {
              printf("->%s --%s\n", fly[l].name, fly[l].name );
        }
    }
}
.. ma non funziona affatto.
help!! 


Non so cosa vogliano dire le variabili ma, a naso, se il contatore k
non appare nel ciclo qualche array non viene scorso col contatore
giusto.
Ciao!

Il 22/02/2011, Angelo ha detto :

Semplicemente non effettui la ricerca della città nel primo file
for (l=0;l<i;l++) //scorro il file 2
  if ((strcmp(par, sa[l].cod1) == 0) && (strcmp(des, sa[l].cod2) == 0))
  {
    for(k=0;k<h;k++)
    {
      if ((strcmp(par,fly[k]."come l'hai chiamato tu")==0)
        int par_ind=k;
      else if ((strcmp(des,fly[k]."come l'hai chiamato tu")==0)
        int des_ind=k;
    }
    break;
  }
printf("->%s--%s\n", fly[par_ind].name, fly[des_ind].name);
-- 
### Non pregare! Se preghi avrài le mani occupate! ###
* No Spam Please +

 int des_ind=k;
   ... tra l'altro, non mantenevo il segno con gli indici ...
Funziona correttamente.
Grazie.

Newsgroup: it.comp.lang.c
Titolo: manuale on-line

ho appena scaricato il gcc. Sto cercando un manuale on-line sul linguaggio c
gratuito. Mi potete indicare qualche sito da cui scaricarlo?

 gratuito. Mi potete indicare qualche sito da cui scaricarlo?
Io avrevo trovato un pò di anni fa "Tricky C" è un libro completamente
gratuito, prova cercare con google.

www.itisbusto.it
Newsgroup: it.comp.lang.c
Titolo: Accesso a database

Devo realizzare un gestionale in Ansi C. L'intenzione era quella di
utilizzare come database MySQL di cui è possibile disporre anche dei
sorgenti. Esiste un metodo per accedere al database senza dover
necessariamente integrare i sorgenti dello stesso nell'applicativo?
Grazie a tutti per le risposte.
Stefano.

Usando le librerie di MySQL.
Forse non ho capito il problema.
ciao
benedetto

Newsgroup: it.comp.lang.c
Titolo: porta seriale

Qualcuno mi sa indicare
dove trovare documentazione o sorgenti
per utilizzare la porta seriale da windows 95
usando Borland C++ Builder 3.0
Grazie
Massimo Penengo
max...@tin.it

...

Puoi usare la libreria Async32 anche se scritta in Pascal per Delphi e'
molto chiara, la puoi scaricare da Delphi Superpage, puoi passare tramite
www.infomedia.it

 
max...@tin.it
Basta che guardi i file della guida.
cercando devices o I/O
ciao

Newsgroup: it.comp.lang.c
Titolo: [newbie] Puntatori

Ciao a tutti.
Sono programmatore da alcuni anni e ho studiato aprecchi linguaggi, ma
il C mi è rimasto indietro :)
Quello che mi affligge adesso che vorrei riprenderlo in mano un po più
seriamente di quanto abbai già fatto, sono i puntatori.
Qualcuno ha da indicarmi dei link con tutorial che siano esaustivi
sull'argomento.
Quello che non capisco, oltre al mero utilizzo, è anche l'utilità. Se
sono utili o se sono un fardello che ci si porta dietro a causa del
basso livello del linguaggio.
Spero di non aver adirato nessun purista :))
Saluti.
 
 -Il peccato di caino-
 
www.vampiripavia.com
-La seduzione del male-
   *IcarusDream*

basso livello del linguaggio.
Sono utili proprio per il livello intermedio del linguaggio.
Tieni presente, per esempio, che in C non esistono stringhe
(contrariamente a quanto avviene nella maggior parte degli altri
linguaggi), esistono array di caratteri e puntatori a caratteri.
Il C e' un linguaggio nato in un periodo in cui non c'erano molti
linguaggi ad alto livello a cui ispirarsi (Algol68 e PL/I erano i
+ utilizzati) e, tra l'altro, e' stato progettato all'ombra di
Unix (quasi di nascosto).  Non c'e' stata, quindi, la ricerca di
una certa accuratezza formale e il risultato e' stato uno
strumento scritto da programmatori per programmatori, senza
alcuna pretesa di rendere la vita facile a chi lo utilizza.  I
puntatori sono un'astrazione piu' o meno alta di cio' che e'
l'accesso alla memoria in assembly (linguaggio usato moltissimo
ai tempi in cui e' nato il C).
I puntatori, per quanto offrano potenza al linguaggio, sono da
evitare la maggior parte delle volte, perche' con essi e' molto
facile sbagliare.
--
CyberWalkie - walkietalkie(at)
libero.it

Ciao a tutti.
http://host.aspide.it/trickyc/trkcfrm.htm
Newsgroup: it.comp.lang.c
Titolo: Problema lettura carattere!

Ciao a tutti, il mio problema è questo, leggo da un file una stringa di 
caratteri, e vorrei rilevare quando il carattere è un apostrofo, ho 
provato a scrivere una cosa del genere if(stringa[contatore]==''') ma mi 
da errore in fase di compilazione:error: parse error before '\x2929207b'
Come posso risolvere?
P.S: L'ambiente di sviluppo è linux
Grazie in anticipo!
Francesco
-- 
Per rispondermi in privato togliere i numeri!

 provato a scrivere una cosa del genere if(stringa[contatore]==''') ma mi 
''' non e' valido perche' il compilatore conta il primo apostrofo come 
segnalazione dell'inizio di una costante carattere e il secondo 
apostrofo come la fine della stessa. Quindi i primi due apostrofi 
delimitano un carattere nullo. Il terzo apostrofo viene poi considerato 
come l'inizio di una nuova costante di tipo carattere, che pero' non e' 
piu' delimitata. Di conseguenza il compilatore traduce in un confronto 
con un carattere nullo (non possibile) seguito immediatamente da una 
costante carattere che si estende in eterno (o fino al prossimo 
apostrofo). In poche parole usa '\''.
-- 
Devaraja (Xdevaraja87^gmail^c0mX)
Linux Registerd User #338167
http://counter.li.org

 
Grazie mille, anche per la spiegazione :-)

Newsgroup: it.comp.lang.c
Titolo: funzione puntatore

mi serve una funzione che come risultato mi restituisca una stringa.
l'unica idea è quella di farla con i puntatori!
come si fa? e come si genera?
io dovrei inserire un intero e dopo convertirla in una stringa del tipo 
hh:mm:ss.
grazie mille


in una marea di modi.... per esempio
prendendo in mano un manuale di C e studiandosi per almeno
30 secondi cosa sono le funzioni, i puntatori e le stringhe in C. :-)
Comunque...
per esempio con allocazione statica o dinamica nel main.
#include<stdio.h>
void fun(int nsec, char *hms)
{
  int s,h,m;
  s=nsec%60;  nsec/=60; m=nsec%60;  h=nsec/60;
  sprintf(hms,"%d:%02d:%02d",h,m,s);
}
int main()
{
/* assumo per semplicita' che l'ora fitti nel formato hh:mm:ss */
   char ora[9];
/* oppure:
   char *ora;
   ora = malloc(9);
*/
   fun(4544,ora);
   printf("Ora = %s\n",ora);
 ......
/* se era stata usata la malloc
 free(ora);
*/
.....
   return 0;
}
oppure, con allocazione nella funzione.
char *fun(int nsec)
{
  int s,h,m;
  char *hms;
  hms=malloc(9);
  s=nsec%60;  nsec/=60; m=nsec%60;  h=nsec/60;
  sprintf(hms,"%02d:%02d:%02d",h,m,s);
  return hms;
}
int main()
{
  char *ora;
  ora = fun(3534);
  printf("Ora  = %s\n",ora);
  ....
  free(ora);
  ....
  return 0;
}
INVECE QUESTO CHE SEGUE E' SBAGLIATO!
Se capisci il perche', hai fatto un passo avanti nello
studio del C....
char *fun(int nsec)
{
  int s,h,m;
  char hms[9];
  s=nsec%60;  nsec/=60; m=nsec%60;  h=nsec/60;
  sprintf(hms,"%02d:%02d:%02d",h,m,s);
  return hms;
}
ciao
g.

Newsgroup: it.comp.lang.c
Titolo: Domanda "alla base"

Ciao a tutti!
Pazientate per la banalità del mio problema. Ho installato la versione 4.9
del Bloodshed Dev-C++, ma appena avvio il programma (proprio il Dev-C++!!)
mi compare una terribile finestra di Warning: con pazienza, ve la copio
qui.
There doesn't seem to be GNU Make file in PATH or in Dev-C++'s Bin path.
Please make sure that you have GNU Make and adjust Bin setting or system
PATH environment variable and that make setting in Compiler Option contains
correct filename, otherwise you will not be able to compile anything.
Effettivamente non riesco a compilare niente, e l'errore che esce fuori se
provo a compilare del codice è proprio "impossibile trovare il file
specificato".
Di cosa si tratta? Cosa posso fare?
Ringrazio chiunque potrà aiutarmi.
Ciao!
Rocky3
-- 
"Il sapere e la ragione parlano, l'ignoranza ed il torto urlano".
Arturo Graf / Indro Montanelli / Anonimo

Dovrebbe essere sbagliata il percorso; prova a controllare (se si avvia
il programma) Opzioni di compilazione -> Cartelle -> FIle binari. Per
default il percorso è "C:\Programmi\Dev-Cpp\Bin".
Ciao.



Grazie!

Newsgroup: it.comp.lang.c
Titolo: Select e piu' socket

Salve a tutti,
sto scrivendo un piccolo client che si collega a piu' server,e con una 
select vorrei rilevare quali server si movimentano. Il codice che 
riporto di seguito pare funzionare con un solo server ma quando ne metto 
piu' il rilevamento funziona su tutti tranne che sull'ultimo socket.
Aumentando gli indici dei cicli e maxfd il problema sussiste.
Qualcuno ha dei suggerimenti?
     for( ; ;)
     {
       if( ready = select(maxfd+1, &rset, NULL, NULL, NULL) < 0 )
         err_quit("select error\n");
       for(k = 0; k < i; k++)
       {
         if( (socka = sockfd[k]) < 0 )
           break;
         if (FD_ISSET(socka, &rset))
         {  // socket is readable
           showfree(socka,*optype); /* operazioni da eseguire */
           close(socka);
           FD_CLR(socka, &rset);
           sockfd[k] = -1; /* cancella sockfd da client */
         }
         if( --ready <= 0 )
           exit(0);
       }
     }

      }
Ciao
Roberto
-- 
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: dove trovo un programma per programmare in c ?

Sapreste dirmi dove posso trovare un programma a basso prezzo o, se esiste,
gratis,
per programmare in c ?
Per una risposta scrivete a:    
alex...@iol.it
Grazie.

...


Ciao,
    gratis c'e' lo gnu (ma sono tanti MB da scaricare) lo trovi su
www.cygnus.com/misc/gnu-win32/


Grazie.
Ciao.
Roberto Gerola
Newsgroup: it.comp.lang.c
Titolo: Libro sul C

Ho intenzione di cominciare a studiare il C. E' il mio primo
linguaggio e non so NIENTE. Non ho nessuna base. Che libro mi
consigliate per iniziare? Uno proprio per ultraprincipianti e che sia
comunque molto semplice.
E come compilatore?
Grazie
Margherita

E come compilatore?
http://www.codeblocks.org/
E' basato sul gcc.

 comunque molto semplice.
Kelley Pohl
C Didattica e Programmazione
Addison Wesley
-- 
     Daniele Giglio       Dona i tuoi cicli di clock alla ricerca!
     dgiglio(a)
iol.it
 
http://boinc.berkeley.edu/
                          --------------------
  C'e' un sistema da cui a lungo non ci tireremo fuori: quello solare.
  		-- Stanislaw J. Lec, "Pensieri spettinati"

 Addison Wesley
Sul libro di wiki che ne pensate? Certo solo per iniziare ed è
tutt'altro che completo
http://it.wikibooks.org/wiki/C
--
Ciao Neo

 
http://it.wikibooks.org/wiki/C
http://it.wikibooks.org/wiki/C/Linguaggio/Panoramica
Cito dal primo programma:
======================
#include <stdio.h>
 int main(void)
 {
  printf("Hello World!");
 }
======================
Manca nulla?
saluti,
Peltio
silverstreakin'
-- 
Su 
www.efunda.com
 trovi informazioni concise sugli aspetti essenziali 
dell'ingegneria (specialmente meccanica). Brevi tutorials, formule per 
il dimensionamento, proprietą dei materiali.  Annuncio sponsorizzato 
dalla LIPSISC.  Aut. Min. rich.

 ======================
Manca il return 0;.... Bhe il bello di wikibooks è che ognuno si può
iscrivere e migliorare. Perchè non lo aggiungi?
--
Ciao Neo

 iscrivere e migliorare. Perchč non lo aggiungi?
Meglio non farlo, visto che per lo standard corrente va bene cosě: la 
graffa finale č  equivalente a return 0.
(perň magari un \n si poteva mettere...)
Giorgio

 (però magari un \n si poteva mettere...)
Compilato e funzionante (gcc). A questo punto non manca niente.
--
Ciao Neo



Boia deh, non lo sapevo! Grazie per l'info. Ma...
   Che tempi, che tempi, signoria mia...
   Ma dove andremo a finire?
Tra l'altro in un testo che dovrebbe essere didattico, o si specifica 
la versione usata (e io direi che per cominciare si potrebbe usare il 
buon vecchio standard ANSI C, e in questo caso quel programma non 
compilerebbe) o si spiega a cosa diamine serve quell' int prima del 
nome della funzione.
saluti,
Peltio
CodeBlocks, sotto quel trappolone di Vista, con Gcc di MINGW non 
compila,
Mi dice che devo ritornare un intero. (ma forse ho settato io da 
qualche parte di usare l'ansi C di default).
-- 
Vuoi sapere come sono prodotti gli oggetti di uso quotidiano? Su 
www.madehow.com
 trovi otto volumi di descrizioni corredate da un 
breveprofilo storico e da eleganti schemi in bianco e nero stile anni 
'50. (Comunicato a cura della LIPSISC, aut min rich)
Newsgroup: it.comp.lang.c
Titolo: piccolo Help!

Ciao a tutti.
Il mio problema e' questo:
Voglio fare una sorta di ping pong tra 2 processi usando i semafori (in C).
Ad esempio voglio far scrivere una stringa una volta al processo A e una
volta al processo B per un tot di volte.
Nel processo padre ho creato e inizializzato un semaforo:
sem=semget(chiave,1,IPC_CREAT| 0666);
ret=semctl(sem,0,SETAL,1)    cosi' dovrebbe essere in wait....
poi ho creato 2 figli con la fork(), ma non ho proprio capito come
sincronizzare i 2 processi!!!!!
Ho cercato di mettere prima e dopo "della sezione critica" le funzioni Wait
e Signal che ho scritto qui sotto,ma niente!
Chi mi puo' aiutare?GRAZIE!!!
int Wait(int sem)
{struct sembuf operazione[1]={{0,-1,0}};
 return semop(sem,operazione,1);
}
int Signal(int sem)
{struct sembuf operazione[1]={{0,+1,0}};
 return semop(sem,operazione,1);
}
il prog viene compilato ma non fa quello che dico io!

Sarebbe meglio se postassi su it.comp.os.linux.development, qui si parla 
di c standard e la sincronizzazione dei processi esula un po' :-)
Ciao
un Wezzy fiscale

Newsgroup: it.comp.lang.c
Titolo: R: ---------PAGHI TROPPO LA BOLLETTA LEGGI

GRAZIE !!!!
Ciao sono un ragazzo che ha letto il tuo messaggio e ha aderito alla tua
proposta recandomi nel sito.
Tutto entusiasta della proposta vado nelle sezioni varie e cosa trovo :
"
La promozione 'Amici Top Banner' č terminata (per ora).
Ringraziamo tutti coloro che hanno partecipato per aver dato
un contributo alla diffusione del nostro servizio.
"
 grazie lo stesso !!!
CIAO-

piccolo finchè vuoi.. ma un banner ogni 30 secondi che sia gif o jpg con una
connessione normale ci perdi in velocità e intasamento
Newsgroup: it.comp.lang.c
Titolo: Formato dei file DOC di Word per Win

Salve...
vorrei sapere se è possibile reperire da qualche parte, il formato dei
file (tracciato record) DOC generati dal software Microsoft Word di
Office...almeno la versione 6
Ho necessità assoluta di accedere a suddetti file a basso livello..help
me please..
scrivetemi su 
el...@geocities.com
PRESTO !!! PER FAVORE !!!


Circa quattro anni fa, ebbi anch'io lo stesso problema.. all'epoca, l'unico risultato fu che il formato doc era proprietario di Microsoft, e bisognava pagare per averne le specifiche.
Saluti,
	Cris
-- 
Cristiano Sadun
Software Engineering & Consulting
email address: cris#sun6$itim$mi$cnr$it 
(for actual address please replace # by @ and $ by .)

 Office...almeno la versione 6
Lo caro zio Bill non vuole rilasciare pubblicamente le specifiche dei .doc
del suo Micro$oft Word...
-- 
Matteo Gottardi / 
gma...@usa.net
*Linux*, The choice of a _GNU_ generation

 > Office...almeno la versione 6
Potresti cercare un programma che si chiama 'word2x' che trasforma
word in ascii text o TeX.  Forse e` reverse engineered, ma almeno e`
free e puoi guardare e usare i sorgenti.
Ciao,
-- 
David Welton                          
http://www.efn.org/~davidw
 
	Debian GNU/Linux - 
www.debian.org

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

Esiste una funzione C standard che mi ritorni la dimensione di un file?
Grazie e ciao.
--
Posted from 
sfw.lib.disco.unimib.it
 [149.132.196.251] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Esiste una funzione C standard che mi ritorni la dimensione di un file?
Non c'e' un modo standard per farlo.
Una tecnica applicabile ai file binari e' quello di usare l'accoppiata
fseek()/ftell().
--
Andrea Laforgia (ICQ 87230455)
------------------------------ 
#exclude <windows.h>

 Esiste una funzione C standard che mi ritorni la dimensione di un file?


long FileSize(FILE *fh) {
Occhio che una funzione del genere puo' dare risultati inesatti per i
file di testo.


 wrote in message
a951ts8vckpegc163...@4ax.com...

Newsgroup: it.comp.lang.c
Titolo: spiegazione puntatori

Salve a tutti,
    ho delle difficolta' a capire il funzionamento del seguente codice:
#include <stdio.h>
void miafunzione(char **vettore);
int main(void){
     char *vettore[1000];  //qui alloco un vettore di puntatori a char... ma 
non dovrei fare un malloc di ogni indice per poter "caricarci" una parola?
     miafunzione(vettore);
     return 0;
}
void miafunzione(char **vettore){ //non sarebbe sufficiente un char 
*vettore? infondo a me serve sapere _solo_ dov'e' posizionato in memoria 
questo vettore giusto?
     int i=0;
     char parola[]="Ciao";
     for(i=0;i<blablabla;i++){
         vettore[i]=strdup(parola); //perche' qui devo usare strdup e strcpy 
non funziona?
     }
}
spero di non aver commesso errori anche in queste 10 righe di codice :-) 
c'e' sempre qualcosa di 'sti puntatori che mi sfugge... :-(
grazie in anticipo a chi avra' pazienza e tempo di spiegarmi
Ciao
Dade 

 c'e' sempre qualcosa di 'sti puntatori che mi sfugge... :-(
Non sono troppo difficili. Una volta capiti, poi, si usano con efficacia
e semplicita`.
Saluti,
Marco

 Marco 

 azz questa differenza mi era sfuggita!
Nota, per inciso, che 'strdup' *non* è una funzione C standard.
Max
Newsgroup: it.comp.lang.c
Titolo: Interprete, editor e Compilatore Help

Scusate ancora,
approfitto della vostra disponibilità per reperire altre "dritte" che 
possano dirigermi verso un buon approccio iniziale di studio del linguaggio.
Non ho ancora comprato le guide suggeritemi per problemi di tempo e di 
salute... Ho però alcuni appunti scaricati da internet, ai quali ho dato 
un'occhiata in attesa dell'acquista del libro...
Si fa riferimento ad un compilatore e ad un interprete codice e ad un 
editor...
Come sistema operativo io uso Windows XP quale interprete ? Quale editor ? 
Quale compilatore ?...
Grazie ancora per l'aiuto!
Eli 

 editor...
Interprete? per il linguaggio C? Quella mi è nuova. Come editor puoi
usare, nel peggiore dei casi, il blocco note o notepad. Scite
(
http://www.scintilla.org/SciTE.html
) è un editor carino, ma io su
windows uso dev-c++ (
www.bloodshed.net/devcpp.html
 , ma sembra essere
giù al momento, boh), che permette di creare i programmi, compilarli
ed eseguirli, tutto in un solo ambiente.
Saludos
Adriano

giů al momento, boh
perchč giů ?
io l'ho appena scaricato...su tuo consiglio !
il sito principale chiede nome e psw, ma ci sono tanti altri siti da cui 
scaricarlo... 

 scaricarlo...
Giù perchè appunto il sito principale non dovrebbe chiedere affatto
login e password, anzi, da 
bloodshed.net
 ti redirige a powweb. E
infatti sì, è scaricabile da altri siti, ma è sempre preferibile
usare il sito principale o un mirror che trovi su questo per essere
sicuri che il programma è valido. O almeno, che non ha _ulteriori_
problemi.
Saludos
Adriano

Elena ha scritto:

editor: Crimson Editor
ambiente: DJGPP
tutto freeware, due cose eccezzionali.
ciao, S.
--  
Postato da Virgilio Newsgroup: scopri i nuovi gruppi 
Eros, foto e video a 
http://newsgroup.eros.virgilio.it

Per quanto riguarda i "semplici" editor :
http://rsoftware.altervista.org/index.php?mod=none_scite
è una distribuzione di SciTE, installabile direttamente in italiano e 
con alcune aggiunte rispetto alla versione originale (che ti ha 
consigliato Adriano).
Per quanto riguarda gli ambienti integrati, io uso 'Ultimate++' 
(
http://upp.sourceforge.net/
), con il compilatore mingw (già incluso 
nella distribuzione di 'Ultimate++').
In alternativa, solo ed esclusivamente per il linguaggio C, io darei 
un'occhiata a 'Pelles C', 
http://www.smorgasbordet.com/pellesc/
.
Elena ha scritto:

-- 
Ciao.
Roberto Rossi
Web   : 
http://rsoftware.altervista.org
Newsgroup: it.comp.lang.c
Titolo: dividere lo schermo

Salve a tutto il newsgroup
volevo sapere come dividere, in c, in due una shell sotto linux. Ad esempio
per visualizzare in due "finestre" due file diversi all'interno della stessa
shell.
Grazie


Grafica != standard
Spostati su it.comp.os.linux.development

Newsgroup: it.comp.lang.c
Titolo: file spostarsi riga successiva

Salve.
Sto scrivendo un piccolo programmino in C, ad un certo punto lavorando
su un file dovrei spostarmi alla riga successiva. Io ho pensato ad una
soluzione del genere:
while(c != '\n')
	c = fgetc(fp);
ma non sembra funzionare e non capisco bene il motivo. qualche anima
pia mi da una delucidazione? ;)
TIA,
Michele

Ciao Michele,
cosa succede di preciso? il '\n' non viene mai trovato oppure
salti alla riga successiva ma con un delta + o - di qualche carattere?
Hai provato un bel printf("%c",c) nel loop cosa ti visualizza?

 pia mi da una delucidazione? ;)
Provo ad indovinare: funziona per un po' e poi ti va in loop infinito. 
Giusto?.
Quando il file finisce, c (che sicuramente hai dichiaranto come int e 
non come char)  vale -1 (che è diverso da '\n').
Ah! Ora che ci penso, prima del while hai inizializzato c ad un valore 
diverso da '\n' (o hai messo un c=fgetc() vero?
Remo D.

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

Ciao a tutti,
Volevo chiedervi se io voglio leggere un file faccio in questo modo, giusto?
fscanf(cfPtr,"%d%d%s",&primo.elemento,
                       &secondo.elemento,
                        terzo.elemento);
while(!feof(cfPtr)){
fscanf(cfPtr,"%d%d%s",&primo.elemento,
                       &secondo.elemento,
                        terzo.elemento);
ora io mi chiedo se volessi leggere un rigo alla volta, come dovrei 
fare? Ed inoltre cosi' facendo il contenuto viene memorizzato, in 
memoria? Ho cercato su internet ma nn ho trovato le informazioni che mi 
servivano.
Inoltre se conoscete qlche sito a cui fare riferimento
Un grazie a tutti


fgets() ?
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   Registered Linux user #337974  < 
http://giovanni.homelinux.net/
 >

Ciao Giovanni
Si ma con fgets(), come faccio a leggere un rigo alla volta?
Grazie
Giovanni ha scritto:


 Si ma con fgets(), come faccio a leggere un rigo alla volta?
Ciao Defected,
ti consiglio un utilizzo più intenso di google.
http://www.die.net/doc/linux/man/man3/fgets.3.html

 
FILE *stream;
char buffer [SIZE];
while (fgets(buffer, sizeof(buffer), stream) == NULL) {
	/* elaborazione dei dati in buffer */ ;
	/* la conversione
}
-----------------------------
char *fgets(char *s, int size, FILE *stream);
fgets() reads in at most one less than size characters from stream and
stores them into the buffer pointed to by s. Reading stops after an EOF
or a newline.  If a newline is read, it is stored into the buffer.
A '\0' is stored after the last character in the buffer.

Newsgroup: it.comp.lang.c
Titolo: [!] Tips and Trick

[Tim.BETA 1]
Tips and Trick, ovvero le più utili, richieste dichiarazioni...
Queste messaggio contiene dichiarazioni che posso servire a *TUTTI*.
Contiene, anche, delle informazioni su come mandare POST e come fare il
QUOTING.
1) Ricavare il numero seriale dell'Hard-Disk (metodo senza API):
Private Function GetSN(drvpath) As String
   Dim fso As Object, d As Object, s As String
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set d = fso.GetDrive(fso.GetDriveName(fso.GetAbsolutePathName(drvpath)))
   s = "Unità " & d.DriveLetter & ": - " & t
   s = s & vbCrLf & "SN: " & d.SerialNumber
   GetSN= s
   Set fso = Nothing
   Set d = Nothing
End Function
2) Approssimare ad N cifre (la funzione Round si basa  sull'algoritmo
Banker's round):
Function fctRound(varNr, Optional varPl = 2) As Double
' by Konrad Marfurt + Karl Donaubauer
'varNr: numero da arrotondare
'varPI: numero di decimali (due predefinito)
    fctRound = Fix("" & varNr * (10 ^ varPl) + Sgn(varNr) * 0.5) / (10 ^
varPl)
End Function
3) Aprire un file col programma associato:
Vedere API ShellExecute
4) Ricavare l'handle di una finestra:
Vedere API FindWindow.
N.B.: Mettendo uno dei due parametri a vbNullSting non si considera
P.S.: Sul sito di Sababros(
http://web.tiscalinet.it/sababros
) c'è un
programma che permette di sapere il ClassName.
Un po' di informazioni sull'uso CORRETTO dell'NG.
***Termini usati nei newsgroup (By Paperino)***:
QUOTARE = rispondere SOTTO al messaggio al quale rispondi,
tagliando le parti non essenziali, le firme eccetera.
PLONKARE (anche "finire nel killfile") = venire ignorato, essere
inserito in una lista di utenti indesiderati, perché irrispettosi
della netiquette, o per altri motivi.
NETIQUETTE = le regole della buona educazione da osservare
quando si è in rete. 
http://www.nic.it/NA/netiquette.txt
OLDIES = frequentatori abituali del NG, in contrapposizione a
newbies, cioè i nuovi arrivati (spesso detti anche "niubbi" :-) )
Piccolo corso di quoting: 
http://www.marco5x.net/usenet/quoting.php
sono tre paginine semplici, fatti (e facci) un favore, leggile senza fretta
e fino in fondo. Poi fatti un giro qui: 
http://www.vene.ws/newsgroup/
Se poi hai un po' di tempo da perdere, senza fretta, vai su uno di questi,
ti faranno comodo:
http://www.news.nic.it/news-it/faq.html
http://community.tiscali.it/acronimi.html
http://www.nic.it/NA/netiquette.txt
http://www.aspide.it/netiquette/
***Importantissimo:***
Leggere ASSOLUTAMENTE questo:
 
http://www.it-lang-vb.net/docs/Manifesto.txt
Poi consiglio il messaggio [SOLUZIONI] Come, dove e quando
That's All!!!!
Ciao
--
Timothy Redaelli
[/TIM]

quando si è in rete. 
http://www.nic.it/NA/netiquette.txt
[SNIP]
Gia', tanto per iniziare potresti leggerle tu prima di postarle,
potrebbero servirti.
Mox

 [Tim.BETA 1]
Oops, ho sbagliato newsgroup (non mi sono accorto che lo stavo mandando qui,
invece che su it.comp.lang.visual-basic).
Scusate...
Riscusate..
Ciao
--
Timothy Redaelli
timothy(dot)redaelli(at)email(dot)it
-----------------------------------
Links:
Sito Comune: 
www.it-lang-vb.net
MSDN: 
msdn.microsoft.com
Newsgroup: it.comp.lang.c
Titolo: sapere dimensione del file

c'è qualcosa come fstat in ansi C99?
non mi toccherà fare la scansione del file vero?
PS: conosco fstat, ma vorrei usare solo funzioni ansi c99.


Si può usare la fseek().  Forzando il posizionamento alla fine del file 
la funzione ritorna la posizione, in questo caso corrispondente alla 
dimensione del file.  Attenzione però che per file di testo la risposta 
non è portabile su tutti i SO.
filesize = fseek(fileptr, 0, SEEK_END);
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   Registered Linux user #337974  < 
http://giovanni.homelinux.net/
 >


Ciao
-- 
Cybertoldo
Per rispondermi via email, sostituisci moc.liamg con 
gmail.com
Newsgroup: it.comp.lang.c
Titolo: help!! PARENTESI GRAFFE

Come deve essere configurata la tastiera per poter fare le graffe con ALT-7,
ALT-10??
O anche con qualcos' altro, basta che le faccia!!!
Grazie mille

Allora
ALT + 123  Oppure ALTGR + SHIFT + [ ---> {
ALT + 125 Oppure ALTGR + SHIFT + ] ---> }
Dome

 ha scritto nel messaggio
news:LwNL7.13469$BA4.4...@news1.tin.it...

devi usare ALTGR anzichč ALT e vedrai che funzionerą.
ALTGR+7
ALTGR+0
t.c 7 e 0  non appartengano al tastierino numerico.
Fly

????
Questa variante non la sapevo e cmq (almeno sul mio pc) non funziona.
Uso WinME e tastiera qwerty standard
Dome

 Uso WinME e tastiera qwerty standard
Credo funzioni solo in Linux.
Ciao,
Cecco

 wrote in message
LwNL7.13469$BA4.4...@news1.tin.it...


 Grazie mille.
Ah, io pensavo stessi sotto linux....^___^
Fly
Newsgroup: it.comp.lang.c
Titolo: Client TCP - Problema compilazione UNIX --> WIN (un pò lungo)

Salve a tutti. E' la prima volta che scrivo.
Vi spiego la situazione:
Ho creato un client TCP in C usando librerie tratte dallo Stevens - Unix 
Network programming vol.1.
Ora se compilo tutto tramite shell con GCC su Cygwin, usando un makefile 
creato appositamente per linkare il mio sorgente .c con  una libreria 
"libxxx.a" che racchiude tutte le funzioni di Stevens, tutto funziona 
perfettamente.
Ma il mio obiettivo è fare in modo che il client giri sia su Unix, Win, e 
Solaris.
Se cerco di compilare il sorgente su Win con DevC++,questi non trova gli 
header a cui si fa riferimnto nelle funzioni di Stevens
E in particolare:
#include <sys/socket.h>
#include <cygwin/socket.h>
e cose così....
Infatti nelle cartelle "include" di Dev non ci sono i file .h che invece 
sono presenti nella cartella "include" di Cygwin.
Ho provato a copiarle ma niente...stesso risultato.
Ho provato a dire a Dev di andare a leggere gli include anche nella cartella 
di Cygwin....ma niente.
Ho provato a cambiare il path degli include nei sorgenti.... ma niente
Allora ho provato a compilare su Eclipse 3.1 avendo l'estensione per C/C++.
Qui l'eseguibile viene generato (usando GCC) ma viene generato per girare su 
Unix. Infatti se lo eseguo su Win compare il messagio di errore "File 
cygwin.dll" mancante.
In pratica penso di aver creato lo stesso eseguibile che avevo prima su 
Cygwin (che infatti usa le stesse System Calls contenute in cygwin.dll)!!
Ricordo che le librerie di Stevens sono conformi allo standard POSIX e che 
sono state scritte proprio per avere come obiettivo la portabilità, non a 
caso vengono usate da molto tempo come uno standard di riferimento per 
programmare in rete.
1)Dove sbaglio?? Devo cambiare le librerie per ogni S.O.??cioè scrivere 
sorgenti diversi? In questo caso dove stà la portabilità?
2)Per Solaris so che dovrei linkare al sorgente delle librerie 
aggiuntive.Dove le trovo?
3)Posso usare un ambiente UNICO per creare,compilare e debuggare i sorgenti 
per tutti e tre i S.O.?
Ringrazio tutti per l'attenzione e quelli che mi aiuteranno.
Tra una settimana ho un'esame su questo e deve su girare tutti i S.O.!!!!
Fabio. 

 per tutti e tre i S.O.?
Cosa intendi per ambiente unico?  Un codice unico oppure lo stesso 
compilatore/librerie/debugger oppure un cross-compilatore?
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   Registered Linux user #337974  < 
http://giovanni.homelinux.net/
 >

 
Toh, un altro partecipante a PAD ;)
Ciiips
Aragorn
Newsgroup: it.comp.lang.c
Titolo: problema reverse

#include <string.h>
/* reverse: inverte la stringa s */
void reverse(char s[])
{
    int c, i, j;
    for (i = 0, j = strlen(s) - 1; i < j; i++, j--)
    {
       c = s[i];
       s[i] = s[j];
       s[i] = c;
     }
}
mi da sempre : C:\DEV-C_~1\LIB\\libmingw32.a(main.o)(.text+0x8e): undefined
reference to `WinMain@16'

 ha scritto nel messaggio
news:UhNd8.11902$fa5.3...@twister2.libero.it...

Un codice scritto in C deve sempre contenere, in uno dei suoi moduli, la
funzione main, che costituisce l'entry point del programma. Aggiungi al
termine un codice di questo tipo:
int main( ) {
    char ch[] = "ciao";
    reverse(ch);
    return 0;
}
In ogni caso, il codice che hai postato (che se non erro dovrebbe invertire
una stringa) non funziona, perchè alla fine del for la stringa passata alla
funzione resta sempre la stessa. E' meglio se leggi la stringa passata
carattere per carattere dal fondo, copiandolo viavia in una variabile
temporanea.
Ciao,
Cecco
Newsgroup: it.comp.lang.c
Titolo: CVS.....what's it?

Salve a tutti, vorrei chiedervi una spiegazione (non so se è OT)
Come ambiente di sviluppo uso il dev-c++, ora ho visto tra le opzioni la
voce CVS.
ho visto che nel gruppo qualce post dietro ne avete parlato, ho cercato
qualcosa in merito ma.... nulla di fatto....
Qualcuno di buona volontà avrebbe voglia di spiegarmi cosè e a cosa serve?
Ciao Marco

 qualcosa in merito ma.... nulla di fatto....
Mah, hai cercato poco, visto che se cerchi cvs con google
il primo link e' quello alla home del progetto:
http://www.cvshome.org/
comunque, molto approssimativamente e riduttivamente,
e' un sistema per  gestire (anche via rete/web, con varie possibilita'
di accedere alle informazioni) le varie versioni di un
progetto software. Quindi tener traccia delle modifiche e di chi
le ha fatte, etc.etc.
Molto comodo per esempio per team di sviluppatori,
anche e soprattutto quando non risiedono fisicamente vicini.
Ciao,
g.

> Mah, hai cercato poco............
Grazie per la tua risposta, effettivamente la mia ricerca č stata molto
limitata poichč ho controllato solo se l'argomento era stato trattato nel
gruppo.
Ciao
Marco

Newsgroup: it.comp.lang.c
Titolo: I soliti 16 bit di una porta hardware

----------------------------------------------
#define RDFIFO 0x300
[...]
printf("\nData = %x\n",inport(RDFIFO));
[...]
----------------------------------------------
Qualche giorno fa ho postato un quesito sulla lettura di una word
(16 bit) da una porta, avanzando il dubbio poi confermato che
in realta' i bit sono 8 nella prima porta e gli altri 8 nella 
porta contigua. 
Colgo l'occasione per ringraziare quel paio di risposte. Tutto contento
mi sono fatto il programmino per tale lettura solo che ho scoperto
un buco terribile per le mie conoscenze.
Leggendo una delle due porte, il contenuto di entrambe viene
azzerato, quindi, dato che il programma e' in QB45, non posso
- come pensavo - emulare la
   INPORT(port)    
del C++ con
   a=INP(a)
   b=INP(a+1)
del QB45. A questo punto mi ci vorrebbe davvero un buon samaritano
che oltre al C++ dal punto di vista comportamentale conoscessa come
fare tale lettura anche col QB45.
Qui tutti programmatori o c'e' qualche buon samaritano?
Saluti,
Claudio
co
-- 
                     _ _
                    (O O)
  +-----------oOO----(_)--------------------------+
  |                                               |
  |         Mail: 
claudio...@texnet.it
        |
  |    Home page: 
http://www.texnet.it/cfabbro
    |
  |                                               |
  |    La casa dell'aforisma e del petteguless    |
  |                                               |
  +-------------------------oOO-------------------+
                   |__|__|
                    || ||
                   ooO Ooo

 
magari dovresti usare
a=INP(port)
b = INP(port+1)
Marco
Newsgroup: it.comp.lang.c
Titolo: Risolvere sistemi *non*-lineari in C

Salve a tutti,
vorrei risolvere un sistema non lineare di equazioni, usando il C. 
Ho cercato un po' in giro, ma pare che ci siano molti riferimenti 
all'uso di applicativi tipo Matlab e simili...invece a me interesserebbe 
scrivermi (o usare una routine open-source gia' scritta) in C/C++.
Qualcuno avrebbe un qualche link o suggerimento?
Il sistema non e' molto grande (un semplice 4x4, e l'unica funzione 
trascendente sotto la quale compare un'incognita e' un logaritmo).
Tnx!
Bye
Dan

 ha scritto nel messaggio
news:MPG.1a713d135...@powernews.libero.it...


 
http://www.library.cornell.edu/nr/bookcpdf.html
Grazie molte!
Ho dato un'occhiatina al 9.7, che credo faccia al mio caso... (sistema 
non lineare di equazioni), in particolare, ho provato ad usare la 
ruotine "newt" (metodo di Newton) - che poi si basa ho visto su altre 
ruotine, come "ludcmp", ecc. ...pero' mi si blocca il ludcmp, dicendo 
che la matrice e' singolare... ?_?
1) puo' essere che ho digitato male le routine...
2) o forse c'e' qualche problema piu' di fondo...
Bye
Dan

... pensa che in questo momento sto implementando
lo stesso algoritmo, ma con equazioni unidim e in c++...
in ogni caso non ho mai utilizzato quella routine 
quindi non ti saprei dire... piuttosto il metodo
di newton-raphson fa uso delle derviata prime 
quindi presuppone alcune condizioni di regolaritŕ, 
hai provato fare un controllo di questo tipo?


 hai provato fare un controllo di questo tipo?
purtroppo non sono un professionista di questi argomenti (codo per 
hobby, un hobby che amo!). puo' darsi come dici tu ci siano problemi di 
regolarita'... in effetti ad esempio un'incognita compare al 
denominatore...forse quella fa saltare un po' le cose...?
pero', ho usato un progamma per dos chiamato mercury, che risolve 
egregiamente il sistema (senza chiedermi tra l'altro un guess iniziale 
della soluzione)... chissa' che metodo usa ?_?
ciao,
dan

Newsgroup: it.comp.lang.c
Titolo: Dove si trova il manifesto del canale ?

                 -- Lao Tsu

 Ciao Re Di Cuori
 
ciao "collega" ..... stammi bene ....


Scusami ma non volevo alimentare polemiche...
cmq se mi rimandi ng posterò li domande realative al C sotto UNIX/LINUX, e
se proprio non trovo risposta qui chiedendo espressamente una tua risposta
se a te non dispiace
Ciao Re Di Cuori
"Antonio barbone" <bar...@raffaello.home> ha scritto nel messaggio
news:slrn933524...@barbone.raffaello.home...


 se a te non dispiace
il Ng e' it.comp.os.linux.development 
per il resto, sono a tua disposizione ...
anzi, approfitto dell' OT e poi chiudo (scusatemi tutti;-))) .... se vuoi,
ti posso spedire un tutorial sulle ncurses che ho scaricato due giorni fa 
sulla rete .... non l'ho visto tutto, ma mi sembra abbastanza completo ....
per conferma, scrivimi pure all'e-mail che trovi in firma ....
ciao ciao

Newsgroup: it.comp.lang.c
Titolo: Generazione Documentazione dal sorgente

qualcuno conosce un software free che consenta di generare documentazione in
html (o in altro formato) dandogli in pasto i file sorgenti c o c++?
Possibilmente senza dover introdurre appositi tag nel codice
Alessandro
alessand...@tiscalinet.it

 Possibilmente senza dover introdurre appositi tag nel codice
Quasi tutti i programmi si basano su commenti speciali prima della
classe/funzione/... da documentare.
	Mauro

Possibilmente senza dover introdurre appositi tag nel codice
Cioè vuoi un programmma che 'capisca' cosa fa il tuo codice e lo
scrive nella documentazione?
Va bene che a noi softwareisti scoccia abbastanza scrivere i doc dei
propri programmi, ma pretendere queste cose... dai...
Luc.

 wrote in message
news:3ACC89BE...@iperbole.bologna.it...

Newsgroup: it.comp.lang.c
Titolo: Bufferizzare un input da disco...

 'The Krazy One' +-- 
---->  "To Reign is Worth Ambition, Though in Hell.
     Better to Reign in Hell Than Serve in Heaven" <---
*** TaRT_Tagline: All life's answers are on TV. - Bart Simpson

 
Se non vuoi scrivere codice aggiuntivo per gestire il buffer, puoi usare
setvbuf() (o setbuf()), ma sono limitate a 32768 bytes (almeno dal VC++,
non so cosa dice lo standard).

 'The Krazy One' +-- 
---->  "To Reign is Worth Ambition, Though in Hell.
     Better to Reign in Hell Than Serve in Heaven" <---
*** TaRT_Tagline: Even worse than raining cats and dogs is hailing taxi's.

 C'e' un modo per farlo?
Certo che c'č. E non ce n'č uno solo ma tanti. Potresti, ad esempio,
utilizzare una lista dalla quale leggi sempre dalla testa e aggiungi
sempre dalla coda (una struttura FIFO). Oppure un buffer circolare
implementato con un'array da 5 * 16384 elementi e due indici, uno per la
lettura e uno per la scrittura, gestiti in modulo 5 * 16384 (nel senso
che puntando oltre l'ultimo elemento ricominciano dal primo). Oppure
ancora potresti utilizzare setvbuf() per lasciare al sistema il compito
di gestire la bufferizzazione. Scegli tu.
EMG

 
Funziona sia in lettua che in scrittura. La setbuf non fa altro che
rimpiazzare il buffer normalmente usato dagli stream (FILE *) e verra usato
dalla _filbuf() in caso di file aperto in lettura. La _filbuf(), chiamata
quando il buffer e' vuoto, esegue una read() di sizeof(buffer) bytes.
BUFSIZE dovrebbe essere dichiarata in <stdio.h> e dovrebbe indicare solo
'quanto dovrebbe essere grande il buffer' e di solito corrisponde alla
dimensione di un blocco del disco (letto sempre in un colpo solo). E'
ragionevole pensare che, per ottenere la massima efficienza, il buffer
dovrebbe essere un multiplo di BUFSIZE. Non e' chiaro se BUFSIZE deve
essere inteso come un limite ma non credo proprio.
Si puo' verificare andando a vedere il numero di byte letti:
#include <stdio.h>
#include <errno.h>
char buffer[BUFSIZ * 5];
main()
{
  FILE *f;
  int reply;
  if ((f=fopen("filediprovagrosso", "r"))==0)
    {
      perror("fopen()");
      exit(1);
    }
  if ((reply=setvbuf(f, buffer, _IOFBF, sizeof(buffer))
    {
      perror("setvbuf()");
      exit(1);
    }
  reply=fgetc(f);	/* una lettura giusto per riempire il buffer */
  printf("Read %d bytes. base=%p, ptr=%p, size=%d\n", f->_cnt, f->_base,
f->_ptr, f->_bufsiz);
 
  fclose(f);
  return 0;
}
Sotto SunOS4, con BUFSIZ=1024, legge 5111+1(fgetc)=5112, non so che fine
facciano i rimanenti 8 bytes! (5*1024=5120) ma non dipendono da un limite
in dimensione perche con 6*BUFSIZ usa una size di 6136 (perde sepre 8
bytes).
Non sono un'esperto dello standard e non so se i nomi dei campi della
struttura FILE possono essere diversi sul tuo sistema (verifica in sdtio.h)
p.s: l'esempio potrebbe contenere degli errori - non ho potuto fare
cut&parte da Unix a DOS


Precisazione:
setbuf() richiede un array di minimo BUFSIZ e comunque usa solo BUFSIZ
byte. Devi usare per forza setvbuf() o setbuffer().
Newsgroup: it.comp.lang.c
Titolo: Pari o Dispari?

Salve a tutti , c'è qualcuno che vorrei sa  come si fà  per determinare
se un numero e pari o dispari in linguaggio C?
Uso Djgpp+Win98+Rhide
Grazie 1000 a tutti
Ciao :-) Roberto

Il metodo che sapevo io era dividere un numero introdotto da tastiera per 2
e assegnare tale valore ad una variabile di supporto, poi controllare se il
risultato della divisione era con virgola allora il numero era dispari, in
caso contrario era pari.
Però non sono del tutto sicuro che in C standard esista una funzione
predefinita come quelle in TP che restituiscano la parte frazionaria di un
numero.
Cmq potresti anche usare l'operatore modulo (%).
#include <stdio.h>
int main(void) {
     float modulo;
     int b;
     printf("%s", "inserire un numero");
     scanf("%d", &b);
     modulo = b % 2;
     if(modulo == 0) printf("%s", "il numero è pari");
     else printf("%s", "il numero è dispari");
     return 0;
}          

Basta che leggi il numero e lo dividi per 2 
con 
b = a % 2
se il resto è intero allorà il numero è pari altrimenti non lo è...
rhymes
rhy...@tiscalinet.it


 Ciao :-) Roberto
int num;
if ((num % 2) == 1)
	{ /* istruzioni per numeri dispari */ }
else { /* istruzioni per numeri pari */ }
HTH

 se un numero e pari o dispari in linguaggio C?
if ( n % 2 )
    // dispari
else
    // pari
oppure
if ( n & 1 )
    // dispari
else
    // pari
EMG

 e pari o dispari in linguaggio C?
<code>
	int isodd(int number) { return number%2; }
</code>
	Alla prossima,
		Marco

[CUT]
oppure
if ( n & 1 )
    // dispari
else
    // pari
EMG
Scusa, ma..il resto di una divisione per 1 non è sempre 0?
Ciao
    Mao

 Scusa, ma..il resto di una divisione per 1 non è sempre 0?
Infatti n & 1 non è il resto della divisione per uno ma l'and bit a bit
tra il valore contenuto in n e la "maschera" con tutti i bit a zero
tranne il meno significativo. Se il risultato è diverso da zero
significa che quel bit era diverso da zero e quindi il numero era
dispari.
EMG

Scusa, ma..il resto di una divisione per 1 non è sempre 0?
Il simbolo di & e' il simbolo di AND bit a bit.
--
Andrea Laforgia (ICQ 87230455)
"Esistono due modi per elaborare il progetto di un software.
 Il primo consiste nel renderlo semplice al punto che non
 manifesti lacune evidenti. Il secondo consiste nel renderlo
 complicato al punto che non manifesti lacune evidenti.
 Il primo metodo e' di gran lunga piu' difficile." [C.A.R. Hoare]

se un numero e pari o dispari in linguaggio C?


 wrote in message
k8ck1t86ug0roftrq...@4ax.com...
