mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c
Titolo: saldo conto corrente

Dove sbaglio?Dovrei leggere da file i movimenti di un conto, ciascun
movimento in una riga  con formato: <data movimento><importo
movimento><valuta>
#include <stdio.h>
#include <string.h>
#define MAX_DIM 20
struct Data
{
  int giorno;
  int mese;
  int anno;
};
int ComparaData(struct Data d1, struct Data d2);
int SaldoMovimenti(char nome_file_input[], struct Data d1);
float ConvertiPrezzo(float p);
int main()
{
  char nome_file_input[MAX_DIM];
  struct Data d2;
  struct Data d1;
  printf("Inserire il nome del file di inresso (massimo %d caratteri) :",
MAX_DIM);
  scanf("%s", nome_file_input);
  printf("Inserire la data finale del periodo di cui si vuole avere il saldo
(es. 22/12/2004):");
  scanf("%d%*c%d%*c%d", &d2.giorno, &d2.mese, &d2.anno);
  printf("Il saldo cumulato alla data da lei inserita e %d Euro",
SaldoMovimenti(nome_file_input,d1));
  return 0;
}
int SaldoMovimenti(char nome_file_input[], struct Data d1)
{
  float somma=0,p,tot;
  float ris;
  char v;
  struct Data d2;
  FILE* fp1;
  fp1 = fopen(nome_file_input,"r");
  while(fscanf(fp1,"%d%d%d%d%*c%s\n", &d1.giorno,&d1.mese,&d1.anno,&p,v)!=
EOF)
    {
      ris = ComparaData(d1,d2);
      if(ris==-1 || ris==0)
 tot = ConvertiPrezzo(p);
      somma += tot;
    }
  fclose(fp1);
  return somma;
}
int ComparaData(struct Data d1, struct Data d2)
{
  if(d1.anno < d2.anno)
    return -1;
  else
    if(d1.anno == d2.anno)
      {
 if(d1.mese<d2.mese)
   return -1;
 else
   if(d1.mese==d2.mese)
     {
       if(d1.giorno<d2.giorno)
  return -1;
       else
  if(d1.giorno==d2.giorno)
    return 0;
  else
    if(d1.giorno>d2.giorno)
      return 1;
     }
   else if(d1.mese>d2.mese)
     return 1;
      }
    else if(d1.anno>d2.anno)
      return 1;
}
float ConvertiPrezzo(float p)
{
  int valore=0;
  char v[6];
  if(strcmp(v,"DOLLARO")==0)
    p *= (0.81);
  else
    p *= 1;
  valore = p;
  return valore;
}

 Dove sbaglio?
Ciao,
 che errori ottieni?
In ogni caso, non e' una buona cosa avere strutture nel prototipo di una 
funzione ... usa i puntatori!
 Ciao
 Federico

 funzione ... usa i puntatori!
Potresti essere piů chiaro per favore? grazie
Mi da errore quando faccio girare il programma in cygwin.Mi dice
"segmentation fault (core dumped)"

Quando si lavora con le strutture, di solito alle funzioni si passano
dei puntatori, poichè questi sono più leggeri delle strutture vere e
proprie:
void foo(struct abc *a);
All'interno della funzione, quindi, i membri dells struttura possono
essere modificati (o letti) con l'operatore "->" invece del ".".
Dato che stai leggendo e scrivendo strutture su un file, cerca di
aprire il file in modalità binaria:
FILE *f = fopen("file.bin", "rb");
e usa fread e fwrite per leggere e scrivere le strutture sul file.
Questo ti permette di evitare cose del genere:
fscanf(fp1,"%d%d%d%d%*c%s\n", &d1.giorno,&d1.mese,&d1.anno,&p,v)
E' meglio fare così:
struct(d1, sizeof(struct Data), 1, fp)
ammesso che d1 sia dichiarato come "struct Data *" e ammesso che fp sia
aperto in modalità binaria.
Newsgroup: it.comp.lang.c
Titolo: Reindirizzamento input

Salve a tutti, vorrei reindirizzare l'output su una pipe e poi 
reimpostarlo, per impostarlo sulla pipe credo si saperlo fare:
pipe(fd[2]);
close(1);
dup(fd[0]);
ora per riportare lo standard input al suo normale file descriptor cosa 
devo fare?
Grazie, ciao ciao.

Piotre Ugrumov ha scritto:



Credo che lo debba salvare prima con;
dup2(1,10); /* stdout copiato in fd numero 10 */
poi
close(1); /* chiuso fd stdout */
dup(fd[1]); /* dup() assegna fd libero piu' gasso quindi 1 che era stdout
*/
pero' coon dup2() puoi farlo il close e il dup insieme infatti se
l' fd e' occupato prima ne esegue il close.
per ripristinare stdout sull' fd == 1
dup2(10, 1); /* chiuse writepipe e riassegna flusso stdout a fd == 1 */
Credo che sia cosi'.
perche' hai fatto dup(fd[0]); ?? fd[0] non e' forse la readpipe??
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: Implementazione matrici

Salve a tutti .
	Qualcuno sa dirmi come implementare un algoritmo
per invertire una matrice usando  il metodo della fattorizzazione?
Troppo difficile??

Luca wrote:

Vado a memoria ( geometria l'ho data 7 anni fa ! ) per cui forse intendo 
fischi per fiaschi...
Io per invertire una matrice usavo il seguente approccio,
consideravo parallelamente una matrice I ( identita ) ed la matrice di 
partenza ( che indico con A ); operavo parallelamente sulla matrice I e 
sulla matruce A, effettuando su tutte e 2 tutte le operazioni necessarie 
per ridurre la aatrice A prima a forma triangolare, poi diagonale, poi 
unitaria. Alla fine la matrice A diveniva pari a I, e la matrice I diveniva 
pari ad A^-1 .... Bisognava stare attenti ad un paio di cose: se su di un 
pivot mi trovavo uno zero, dovevo scambiare quella riga con una di quelle 
sotto ( sto supponendo che siamo trasformando la matrice A in triangolare 
superiore ); se tutte le righe sottostanti avevano quella colonna pari a 
zero, allora la matrice e' singolare...
Sicuramente mi sono dimenticato qualche passo, pero' la sostanza era questa 
...

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

Ciao a tutti
scusate la domanda ma qualcuno sà indicarmi un buon libro (in Ita) che
spieghi le basi del C ??
vorrei imparare ad usare il C sia per Linux che per altri OS...
grazie mille.
bye

 spieghi le basi del C ??
Kernighan e Ritchie - Il linguaggio C - Seconda edizione.
EMG


aggiungerei :
Tondo e Gimpel - Linguaggio C il libro delle soluzioni -
Newsgroup: it.comp.lang.c
Titolo: il contrario di gotoxy?

Esiste una funzione che restituisce la posizione corrente del cursore sullo
schermo?
--
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
e-mail: 
cerch...@ciaoweb.it
 
33813...@tim.it
Bye byte, Cerchietto
La vita, senza una meta, è vagabondaggio
(Seneca)
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

schermo?
Esistono le API Win32.... quindi se vuoi usarle :
--- GetCursorPos ---
The GetCursorPos function retrieves the cursor's position, in screen
coordinates. 
BOOL GetCursorPos(
    LPPOINT lpPoint 	// address of structure for cursor position  
   );	
 
Parameters
lpPoint
Points to a POINT structure that receives the screen coordinates of
the cursor. 
ps. cmq č OT....
--
Rhymes
rhy...@myself.com
http://www.foxhound-games.it


Se usi il DJGPP si tratta delle funzioni :
int wherex(void);
int wherey(void);
la prima restituisce la posizione x del cursore e la seconda quella y.

 la prima restituisce la posizione x del cursore e la seconda quella y.
Ah! si, adesso ricordo.
Grazie :-)


Newsgroup: it.comp.lang.c
Titolo: Che sia un bug?

 
Intendi dire che il compilatore non genera il codice per
'iNumero2=sizeof(Video_mem)' ?
Probabilmente ottimizza: iNumero2 non viene utilizzata da nessuna parte.
- iNumero=sizeof(..): non viene rimossa perche' iNumero e' globale
(potrebbere essere usata altrove)
- iNumero2=....: viene rimossa - e' una variabile automatica non usata
- iNumero3=....: non viene rimossa - e' statica

 
Grazie.

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

ho bisogno di fare una calcolatrice che inserendo 1+1 mi dia subito il
risultato premendo Invio
Problema:  fare distinguere il numero dal tipo di operazione all'interno
della stringa
se mi potete aiutare mandate un E-mail a 
davi...@freemail.it

 della stringa
Usare la funzione isdigit() ?
Probabilmente anche le altre del gruppo possono fare comodo...
--
Alessandro Monti
Newsgroup: it.comp.lang.c
Titolo: Un buon manuale cartaceo?

Ciau,
potreste consigliarmi un buon manuale cartaceo sul C che parta dal "ground 
0" e arrivi a un livello medio-avanzato? A me in particolare servirebbe 
per portarmi avanti col programma dell'università (che inizierò l'anno 
prossimo ;).
grazie!
-- 
L'           è invisibile agli occhi
http://scriverefantascienza.blogspot.com/
 

 
ha scritto nel messaggio 
news:442458de$0$18294$4faf...@reader1.news.tin.it...


0" e arrivi a un livello medio-avanzato? 
Il buon vecchio K&R è pur sempre il riferimento principale, anche se
per imparare non va benissimo (anche perché lontano, in misura minore
o maggiore, da entrambi gli ultimi standard del linguaggio).
Tienilo comunque come riferimento principale.
Ti rimando invece all'ottimo Harbison e Steele:
http://www.careferencemanual.com/

 
io ti consiglio: Kelley, Polh - C: Didattica e Programmazione - Pearson
o altrimenti: B. S. Gottfried - Programmare in C - McGraw-Hill

Sarà che io sono mentalmente impedito, sarà che non ho un professore
appresso, sarà che non mi applico abbastanza, a me il K&R viene
difficile: sono arrivato ai vettori di caratteri, e dopo non capisco
più niente... E dire che io qualcosina di C la sapevo, almeno la
sintassi fondamentale... Idee? Consigli? Conigli? Va bene tutti,
purchè mi aiutiate :D

Jaden ha scritto:

anche io mi sono bloccato più o meno lì (non ricordo precisamente...)...
ora sto tentando di imparare il C per "trials&errors"... prove ed
errori... scrivo, se è sbagliato, googlo e correggo... e vado di `man 2
nomefunzione'...
non so perchè anche a me il K&R viene un pò difficilotto... :(
Saludos
David
-- 
Linux Registered User #334216
Get FireFox! >> 
http://www.spreadfirefox.com/?q=affiliates&id=48183&t=1
Staff >> 
http://www.debianizzati.org
 <<

Newsgroup: it.comp.lang.c
Titolo: [BARI] RICERCA PROGRAMMATORE

DADAnet Internet Provider Puglia (o EXE srl?) ricerca
n. 1 Programmatore
Conoscenze richieste:
-interfacciamento web/database;
-ottima conoscenza dei linguaggi Visual C e/o PERL-CGI;
-possibilità di operare in ambiente Windows NT e/o Linux;
Luogo di lavoro:
Barletta (BA)
Costituiscono titoli preferenziali:
-precedenti esperienze nel settore del commercio elettronico;
-conoscenza della lingua inglese;
Trattamento economico adeguato.
Inviare curriculum vitae (se in attachment in formato Word o RTF) 
specificando il subject: OFFERTA PROGRAMMATORE 01
per posta all'indirizzo
EXE s.r.l.
p.zza caduti, 18
70051 Barletta (BA)
per fax al numero 
0883347357
specificando OFFERTA PROGRAMMATORE 01
************************
Lorenzo Cipparrone 
lor...@ba.dada.it
*** web staff ***
+39 883 33.00.00/1
DADAnet Internet Provider
Piazza Caduti 18
70051 Barletta (Bari)
Italy


Newsgroup: it.comp.lang.c
Titolo: richiesta di suggerimento per valori nulli

Ciao a tutti,
ho una richiesta da neofita:
sto scrivendo un programma per scopi di studio ed ho numerosi array
dichiarati con allocazione dinamica di memoria che hanno lo scopo di
immagazzinare alcuni falori di output da alcune funzioni. Ad un certo
punto ho la necessità di conoscere il numero di valori che hanno
raccolto, di cui posso conoscere solo il valore massimo ma non quello
effettivamente generato a real time.
Ho pensato di riempire il mio array, immediatamente dopo la
dichiarazione, con un NOVALUE definito con una direttiva iniziale del
tipo: #define NOVALUE 100000 per poi contare tutti valori diversi da
10000., in quanto 10000 è un valore che teoricamente non dovrei avere
nell'array.
Non sono convito che questa sia effettivamente la soluzione migliore
ma non riesco a trovarne un'altra che funzioni.
Grazie a chivorrà agiutarmi
nomos

 nomos
Ciao!

 Ciao!
Grazie!


In quel caso si può anche usare una bitmask invece di un vettore
parallelo, o non è una pratica utilizzata (io di solito faccio così)?


Anche quella è un'opzione, ma io la userei solo in caso i vettori
siano molto molto grandi. Se usi un bit invece di un int per
memorizzare un valore ovviamente risparmi molta memoria, ma per ogni
accesso devi fare divisioni moduli e maschera per cui su molti accessi
usi tante operazioni.
Per fare due esempi su tutti, sui filesystems solitamente si usa una
bitmap (tanti dati, bisogna ottimizzare lo spazio), su filtri digitali
di solito il vettore (tanti calcoli, bisogna ottimizzare il tempo di
CPU).
Ciao!

 di solito il vettore (tanti calcoli, bisogna ottimizzare il tempo di
quando bisogna ottimizzare tempo e spazio si usa una variabile che
contiene l'indice dell'ultimo dato inserito. cosi sai che tutte le
celle con l'indice minore di quello nella variabile sono usate, quelle
con l'indice maggiore di quello nella variabile sono vuote.
Ovviamente lo si puo' fare se i dati vengono inseriti senza vuoti
nell'array (altrimenti bisogna usare un array parallelo o una bitmask
come hai detto tu).
Ciao Jack
PS: se serve un buon libro sui filtri digitali (e soprattutto degli
algoritmi ottimizzati): 
http://www.dspguide.com/pdfbook.htm

Newsgroup: it.comp.lang.c
Titolo: Università Manuale C

Salve ragazzi,
sapreste indicarmi dopo posso trovare un non buono ma ottimo manuale per il
C?
Non che non ne abbia gią centinaia, ma mi serve un'approfondimento.
Vi prego di indicarmi solamente siti SERI in cui č possibile scaricare il
manuale (in italiano).
Mi servirebbe specialmente un manuale che tratta le liste in C e in
particolare le liste doppiamente concatenate.
Vi ringrazio dell'aiuto.
Ciao a tutti. :)

Non so cosa intendi per "Seri", ma io ho imparato (o almeno ci ho provato
^_^) sul TrickyC, 800 kb (zippati)di manuale in C con esempi e contro
esempi... cercati sto tutorial di BarningaZ. Vedi come te!
Dome

 esempi... cercati sto tutorial di BarningaZ. Vedi come >te!
Fermatevi tutti e due, codesto libro è pieno zeppo di errori e fa parecchi
miscugli su estensioni non standard del linguaggio e viceversa.
Ciao.
Newsgroup: it.comp.lang.c
Titolo: coda statica e coda dinamica

che differenza c'e' tra coda statica e coda dinamica ?
un esempio di implementazione ?
grazie... 

 un esempio di implementazione ?
La differenza la sai gia', un esempio di implementazione... beh parti da 
qua:
struct Coda{
    struct CodaElem{
        int valore;
        struct CodaElem *prossimo;
    };
    struct CodaElem *testa;
    struct CodaElem *coda;
};
La coda ha due puntatori, uno all'elemento in testa alla coda, uno 
all'elemento in coda alla coda. Essendo la coda una struttura dati di tipo 
FIFO (first-in first-out), gli inserimenti avverrando in coda e le 
estrazioni in testa.
Ogni elemento conterra' un "valore",  nell'esempio sopra un intero, ma 
potrebbe benissimo anche essere un'automobile ed un puntatore all'elemento 
successivo.
In pratica quando inserisci un elemento in coda fai puntare il puntatore 
prossimo dell'elemento che e' in coda al nuovo elemento e poi fai puntare 
pure il puntatore che punta alla coda della coda a questo nuovo elemento 
(che di fatto ora si trova in coda).
Quando estrai l'elemento in testa invece, usi il puntatore alla testa della 
coda per accedere a tale elemento e poi aggiorni il puntatore alla testa in 
modo tale che punti a testa->prossimo, cioe' all'elemento subito dopo a 
quello che era in testa (la nuova testa).
Ovviamente devi anche tenere presente che la coda puo' essere vuota (testa e 
coda puntano a NULL) e che puo' contenere un solo elemento (testa e coda 
puntano allo stesso elemento).
Ovviamente la coda e' una banale struttura che puoi allocare sullo stack, 
non e' altro che una struttura che contiene due puntatori. L'unica cosa 
dinamica sono gli elementi che "devi" allocare at-run-time con malloc e poi 
inserire nella coda (usando in puntatori). Idem, quando estrai un elemento 
devi deallocarlo con free. (in realta' potresi allocare sullo stack anche 
gli elementi (ed usare il loro indirizzo), ma questo renderebbe la cosa 
davvero poco dinamica e ...tanto vale usare un array come facevi!).
Ora vengo al punto, se non hai mai fatto nulla del genere ti consiglio un 
buon libro. Non e' che siano cose molto difficili, ma senza dubbio 
all'inizio sono ostiche. Mi ricordo che quando iniziai a programmare mi feci 
subito prendere da queste strutture dati (alberi, liste, code, etc..) 
perche' sembravano "difficili" e percio'una sfida. In realta', ripensandoci 
ora, sono semplici (ci sono anche strutture dati molto complesse tuttavia, 
ma certamente non una coda!).
Il mio consiglio percio' rimane quello di comprarti un buon libro e 
studiare. Se non ti puoi permettere di comprarti un libro ci sono 
biblioteche, libri online, pagine internet con tutorials etc...
Tommaso
P.S. come dal mio post su it.comp.lang.c++, il C++ e' un linguaggio diverso 
(tra parentesi molto piu' ampio e complesso) e nel caso specifio, in C++, 
tutto cio' che dovresi fare e' usare std::queue<Macchina>.
Newsgroup: it.comp.lang.c
Titolo: [?] buon C - C++ per Linux

Salve e scusate se la domanda potrą sembrarvi banale.
Qualcuno saprebbe consigliarmi un buon ambiente di sviluppo C e/o C++ per
Linux che giri sotto la GUI KDE?
TIA
vit...@tiscalinet.it



 wrote in message
news:9m37bq$l86$1...@lacerta.tiscalinet.it...

Non e' banale, e' OT...
Cmq esiste KDevelop
--
---
Alessandro >>CoMiX<< Cominu
e-mail: 
aco...@tiscalinet.it
Icq: 116354077
Registered user at 
http://counter.li.org
 # 203765

Linux che giri sotto la GUI KDE?
Kdevelop
	Arcimboldo
-- 
*** Hi! I'm a .signature Virus ! Copy me
    to your signature to help me spreading! ***

Non e' banale, e' OT...
OT de che? č Linux, no? č una richiesta di software, no?



Il cross-post ha fatto altre vittime...
Marco Barisione (ICQ 84277092)

 Cmq esiste KDevelop
dove lo trovo?
TIA

 Kdevelop
grazie, anche a te faccio la stessa domanda: dove trovarlo?
Abbbiate pazienza, ma dopo decenni di esperienza di programmazione sotto
Windows mi sono trovato catapultato nel mondo Linux che per me è ancora
tutto da scoprire...
;-)

> Il cross-post ha fatto altre vittime...
qualcuno un giorno dovrà spiegarmi perché continuino a costruire auto che
vanno a 200 Km/h mentre i limiti sono di 130...
Mi sembrava, visto l'argomento, che in questo caso un limitato xpost fosse
opportuno, ma visti i risultati... non lo farò più :->
Bye

 grazie, anche a te faccio la stessa domanda: dove trovarlo?
[CUT]
in qualunque distribuzione linux recente (ad esempio SuSE linux
7.2) che trovi in edicola gratis o puoi acquistare per poco più
di centomilalire con tanto di corposi e appetitosi manuali (nel
caso di SuSE).

 grazie, anche a te faccio la stessa domanda: dove trovarlo?
www.kdevelop.org
-- 
Nick Belane
Newsgroup: it.comp.lang.c
Titolo: vettori di caratteri

Ciao, ho iniziato a studiare sul kernighan e ritchie ma mi sono imbattuto in
questo esempio proprio nell'introduzione, al capitolo 1.9 "Vettori di
caratteri". In teoria dovrebbe leggere un insieme di linee di testo e
stampare la più lunga. Ma non lo fa. Il compilatore mi da questo errore:
line.c: In function 'getline':
line.c:35: 'line undeclared (first use in this function)
line.c:35: (Each undeclared identifier is reported only once
line.c:35: for each function it appears in.)
Avendo da poco iniziato a programmare in C e non essendo pratico, non riesco
a capire come correggere l'errore. Qualcuno può aiutarmi? Il codice è il
seguente:
---------------------------------
#include <stdio.h>
#define MAXLINE         1000                                                    
int getline(char line[], int maxline);
void copy(char to[], char from[]);
main()
{
        int len;                                                                
        int max;                                                                
        char line[MAXLINE];                                                     
        char longest[MAXLINE];                                                  
        max = 0;
        while ((len = getline(line, MAXLINE)) > 0)
                if (len > max) {
                        max = len;
                        copy(longest, line);
                }
        if (max > 0)                                                            
                printf("%s", longest);
        return 0;
}
int getline(char s[], int lim)
{
        int c, i;
        for (i = 0; i < line - 1 && (c = getchar()) != EOF && c != '\n'; ++i)
                s[i] = c;
        if (c == '\n') {
                s[i] = c;
                ++i;
        }
        s[i] = '\0';
        return i;
}
void copy(char to[], char from[])
{
        int i;
        i = 0;
        while ((to[i] = from[i]) != '\0')
                ++i;
}
--------------------------

         for (i = 0; i < line - 1 && (c = getchar()) != EOF && c != '\n'; ++i)
                           ^^^^
Immagino che qui tu intendessi MAXLINE invece di "line".
Inoltre, se l'intenzione era di uscire dal ciclo while in main() quando 
uno inserisce una riga vuota, occhio che il '\n' viene conteggiato come 
carattere (i.e. quando inserisci una riga vuota, getline() ritorna 1, e 
non 0), per cui non esci dal ciclo.
A parte questo, mi sembra ok.
-- 
   |   \    \  | ___|_  |_  | ianezz a casa sua... :-)
   |  _ \  | \ | _|    /   /  Visita il LinuxTrent a
  _|_/  _\_|  _|____|___|___| 
http://www.linuxtrent.it

 Immagino che qui tu intendessi MAXLINE invece di "line".
Sul K&R è scritto proprio in quel modo. Grazie mille!!

 ha scritto nel messaggio
news:2Iyta.93479$iy5.2...@twister2.libero.it...

forse non era "line" ma "lim"...
Ciao,
Ema
Newsgroup: it.comp.lang.c
Titolo: Creare un file .exe in linux

Salve ha tutti,
ho googlolato un po in giro tra vari siti, ma nessuno e' riuscito a
darmi una risposta a questa domanda.
Ho scritto una piccola applicazione in C, ovviamente sotto linux, ma
vorrei creare il file eseguibile per windows tramite linux. E'
possibile? esiste una sorte di comanda del genere
#gcc -.exe prova.c
scommetto di no? uso mandriva 2007.1
PS lo so che se creo un file .exe sotto linux non funziona, ma forse
con wine...
Grazie a tutti

 
mingw è la risposta.
Ciao!
-- 
Toyotoshy, Linux user #312588


Puoi dare al file un nome qualsiasi, ma se non hai installato un 
ambiente di cross-compilazione non potrà mai funzionare.
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   Registered Linux user #337974  < 
http://giovanni.homelinux.net/
 >


grazie 1k!!
Newsgroup: it.comp.lang.c
Titolo: comandi per porta parallela

stampante!
Se sei riuscito a farlo in basic, non credo ci siano problemi a farlo in C.
Al posto del inp ed delle out del basic ci sono delle simili in C. Purtroppo
non sono standard, e devi andarti a sfrugugliare l'help del tuo compilatore
per sapere quali. ( Prova a cercare In e Out .... )

Possego un strumento per misure elettriche che è in grado di comunicare con
una porta centronics monodirezionale ( quella che si trova su tutti i
computer da una ventina di anni) ma per ora sono solo riuscito a scrivere un
programma in basic per comunicare con la medesima perchè non conosco i
comandi del C per utilizzare questa interfaccia. Dovrei comunicae sia in In


Newsgroup: it.comp.lang.c
Titolo: Visual C++ 5.0

Sto utilizzando da poco Visual C++ 5.0 per scrivere un complesso programma
in C e ottenere l'eseguibile da far girare in finestra Dos all'interno di
Windows 95.
Sin qui penso non ci siano errori di procedimento.
Il programma e' perfettamente funzionante,il builder non segnala nessun
problema anche su un livello di guardia altissimo,non ci sono problemi di
cattiva allocazione di memoria.
L'eseguibile generato in modalita release e' perfettamente funzionante fuori
dell'ambiente di Visual C++.
Eppure leggendo per caso con un editor il file eseguibile generato sono
riportati dei messaggi che riporto a fine email.
Quale e' il problema?
Ringrazio tutti anticipatamente per la risposta.
Paolo
ppxxxx                     ( n u l l )     (null)  runtime error
  TLOSS error
   SING error
    DOMAIN error
  R6028
- unable to initialize heap
    R6027
- not enough space for lowio initialization
    R6026
- not enough space for stdio initialization
    R6025
- pure virtual function call
   R6024
- not enough space for _onexit/atexit table
    R6019
- unable to open console device
    R6018
- unexpected heap error
    R6017
- unexpected multithread lock error
    R6016
- not enough space for thread data
abnormal program termination
    R6009
- not enough space for environment
 R6008
- not enough space for arguments
   R6002
- floating point not loaded
    Microsoft Visual C++ Runtime Library    Runtime Error!
Program:    ... <program name unknown>  GetLastActivePopup  GetActiveWindow
MessageBoxA user32.dll






E' assolutamente normale che ci siano, quelle sono le stringhe di errore
che il tuo programma si porta appresso nella malaugurata ipotesi che
durante l'esecuzione succeda qualcosa d'imprevisto e il programma e'
costretto a terminarsi in maniera brusca,
se ci fai caso alcune si riferiscono alla impossibilita' di allocare
memoria ed altre si riferiscono ad errori in operazioni in virgola
mobile.
Marco

 Quale e' il problema?
Nessun problema. Quelli sono i messaggi di errore che _potrebbero_
comparire in run-time e non indicano affatto che ci sia un errore nel
programma.
EMG
Newsgroup: it.comp.lang.c
Titolo: const

ciao a tutti, sono all inizio, e non ho grande esperienza in programmazione. 
comunque il mio problema č: mentre studiavo sul D&D(pag 387), le strutture, 
mi son imbattuto in un programma di esempio, in cui compare l'istruzione 
"const".
essa compare sia nei prototipi delle funzioni, sia nell inizializzazione di 
un vettore di puntatori.
a che serve?
scusate se č una stupidagine ma sul libro non l'ho trovato.
grazie mille
foley 

 foley
non ho il testo sottomano al momento ma mi ricordo che il concetto è
spiegato bene. Hai letto il libro dall'inizio o salti qualche cosa?
Rileggi con calma.
Ciao.

 a che serve?
significa che la variabile non può essere modificata. In effetti in C ci 
sono due situazioni in cui risulta utile:
nelle variabili statiche (dichiarazioni globali). In certi ambienti 
(embedded, ad esempio) la variabile potrebbe essere memorizzata in 
memoria ROM, risparmiando la RAM.
nei passaggi di puntatori ad una funzione. In questo caso significa che 
la funzione, pur accettando un puntatore, non ha intenzione di 
modificare i dati puntati. In pratica significa che viene utilizzato un 
puntatore non per poter modificare i dati passati dall'utente, ma solo 
per non dover copiare tutto l'oggetto sullo stack.
E.


quindi non č indispensabile?
grazie ancora
foley 

 quindi non č indispensabile?
Non č indispensabile se decidi di non usarlo mai. Se alcune funzioni lo 
utilizzano, invece, ti ritrovi in situazioni in cui sei costretto ad 
utilizzarlo. In C++, invece, č molto piů importante.
E.

Newsgroup: it.comp.lang.c
Titolo: ricerca di stringhe in file binari

Ciao a tutti,
dovrei scrivere un programma che cerca una o + stringhe all'interno di
file.
Il file da analizzare potrebbe essere sia ascii che binario.
Non posso usare strcmp perchè non funziona con buffer letti da file
binari.
Vorrei evitare il confronto byte a byte perchè i file da analizzare
possono essere anche molto grossi e sicuramente rallenterei molto la
ricerca.

 file.
hint: cerca il sorgente di strings, un prog gpl che fa esattamente 
quello che ti serve ( e se non e' un compito a casa, usalo e basta :)

ricerca.
Non se usi l'algoritmo di Boyer-Moore-Horspool.

> Non se usi l'algoritmo di Boyer-Moore-Horspool.
Non lo conosco. Come funziona?



un paio di link che ti possono servire :
Home page di Moore : 
http://www.cs.utexas.edu/users/moore/welcome.html
(l'esempio dell'algoritmo e' sotto "My best Ideas")
Sorgente ic C :
http://www.dcc.uchile.cl/~rbaeza/handbook/algs/7/713b.srch.c.html
ciao



www.google.com
Newsgroup: it.comp.lang.c
Titolo: Null pointer assignment

Come da oggetto, alla fine dell'esecuzione di un programmino (che funziona
benissimo ora grazie ai consigli sull'allocazione dinamica) ottengo questo
messaggio : Null pointer assignment.
Che diavolo significa?
Ripeto che il programma funziona...
Grazie.

 messaggio : Null pointer assignment.
Ipotizzando che tu sti usando un vecchio compilatore Borland...
 
http://www.vmlinux.org/~jakov/community.borland.com/15500.html
Max


Ipotizzi benissimo... ;)
Ma nache seguendo le indicazioni del documento che mi hai linkato,
inizializzando correttamente tutto quello che può essere inizializzato e
deallocando alla fine, non cambia nulla....
...bah...

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

Salve,
qualcuno sa dirmi se è possibile ( e eventualmente come ) ricavare il
file .asm
del mio programma C da un preistorico compilatore Turbo Borland C 1.0?
Grazie


Con il mio TurboC++ 1.01 basta mettere lo switch -S tra le opzioni di
compilazione. Vedi un po' se c'è qualcosa di analogo nella tua versione.
EMG

byez
Ciao, io usavo il BC2.0 ed esisteva un'opzione del compilatore per
generare il sorgente ASM del codice scritto con l'opzione per
mettere i commenti del codice C relativo.
Penso sia un'opzione tipo -s comunque se guardi nell'Help
dovresti essere in grado di trovarlo.
Ciao Manuel.
Newsgroup: it.comp.lang.c
Titolo: informazioni su scanf e gets

auguri a tutti.
ho un dubbio sulla funzione scanf e gets.
avendole utilizzate insieme una a seguito dell'altra prima scanf per leggere
un intero (o anche un char e altro) e poi gets per leggere dallo standart
input una stringa.
purtroppo devo dire che non funziona . leggendo le faq
hanno confermeto il mio dubbio.
ora pero' non so come sostituire queste due funzioni.
ho letto di fgets, ma e' buona sia per leggere stringhe che caratteri int e
altro?
voi cosa mi consigliate?

 voi cosa mi consigliate?
Prova a leggere anche l'intero come un carattere, tra le altre cose e' piu'
sicuro.
Ad esempio se ti aspetti un int e metto 'T' il programma non lo gradisce.
Successivamente puoi convertire il carattere o la stringa in numero intero.
In pratica la soluzione piu' semplice (non la migliore) e' usare due gets
(ad esempio)
leggi due stringhe e poi converti la prima in intero.
Tommy

 leggi due stringhe e poi converti la prima in intero.
Meglio fare un unica lettura (con fgets visto che effettua i controlli sulla 
dimensione del buffer) e poi parsificare direttamente il buffer appena 
letto (sscanf oppure a mano se il parsing diventa troppo complesso per uns 
sscanf).
-- 
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."

sscusate ma mi potete dire un testo di programmazione in c completo?


 sscusate ma mi potete dire un testo di programmazione in c completo?
Per avere un panorama abbastanza completo dovresti:
- leggere il K&R seconda edizione
- leggerti qualche libro come il Koenig (se ne e' parlato in qualche thread 
pochi giorni fa')
- leggerti lo standard (almeno quello del C99... ma ci sono cose del c89 non 
contenute nel K&R, quindi anche quello merita uno sguardo)
Altrimenti puoi provare il Deitel&Deitel: dicono che sia abbastanza buono 
(soprattutto per chi inizia)... ovviamente parlo per sentito dire sul 
Deitel (e per conoscenza di altri libri degli stessi autori) dato che non 
l'ho mai letto :)
Se poi non sai "programmare", servirebbe anche qualche testo su algoritmi e 
strutture dati.

Newsgroup: it.comp.lang.c
Titolo: realloc ???

Ciao a tutti,
ho bisogno di una stringa di appoggio nella quale parcheggiare i risultati
ad ogni ciclo di lettura da un DB; il mio problema è che non so a priori
quanti sono questi dati...ho fissato "arbitrariamente" la dimensione della
stringa a 10000 byte...come faccio ad ogni ciclo a rendermi conto che sto
per superare questa soglia e di conseguenza prevedere un incremento nella
dimensione di questo buffer?
grazie 1000
Scusate la banalità della domanda ma è da un po che non mastico il C...

 dimensione di questo buffer?
size_t size = 1000;
int wpos;
char *buff = malloc(size);
assert(buff);
wpos = 0;
while(...) {
	char c = leggi_db();
 
	if (wpos == size) {
		char *tmp = realloc(buff, size + 100);
		if (tmp == NULL) {
			/* Memoria esaurita, i dati rimangono in buff */
			....
		}
		buff = tmp;
		size += 100;
	}
	buff[wpos++] = c;
}
wpos corrisponde alla posizione di  scrittura corrente, size contiene la
dimensione del  buffer. Qui per semplicita`  ho supposto che  le letture
fossero di  1B per  volta, ovviamente puoi  usare stringhe  di lunghezza
arbitraria, incrementando opportunamente wpos.
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
Se non puoi convincerli, confondili.
Newsgroup: it.comp.lang.c
Titolo: Re: Conoscere il tempo di esecuzione di una porzione di codice

 nell'esecuzione di un certo numero di righe...
Dvi rifarti a qualche funzione specifica del tuo sistema operativo.
Per esempio, sotto Windows esiste GetTickCount() per cose grezze e
QueryPerformanceCounter() per tempi più accurati.
Se sei sotto Linux: it.comp.os.linux.development
Se sei sotto Win32: it.comp.programmare.win32
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Se sei sotto Win32: it.comp.programmare.win32
e inoltre, invece di infilare qualcosa tu dentro il programma,
puoi considerare di usare un profiler, che appunto
dovrebbe dirti quali parti del tuo programma consumano piu' CPU.
ciao,
g.

Salve, sto tentando di isolare un problema di rallentamento nell'esecuzione 
del codice e necessito di una funzione per segnalare il tempo trascorso 
nell'esecuzione di un certo numero di righe... avevo visto tempo fa una cosa 
del genere, ma ora non mi ricordo piů... ho provato con clock, ma si 
riazzera piů volte prima di fermarsi, quindi  non č utile..
____________________
Se la so, rispondo sempre. 

 dovrebbe dirti quali parti del tuo programma consumano piu' CPU.
Si sto usando un profiler ... ma non mi sembra molto affidabile.. forse lo 
sto usando male ma soprattutto rallenta ulteriormente il sistema ( e 
parecchio)...
Comunque: questo è il codice incriminato:
#define pl 36
int pk = 27;
int v = (pl + 2)*pk; //=1026
while(v--){
//codice veloce
for ( c=0; c<160;c++){ //1026*160 volte
    wgn = 4*var*gauss();
    *(vett+c)=*(vett+c) + wgn;
}
//codice veloce
}
Ora siccome se commento "wgn = 4*var*gauss();" il tempo di esecuzione torna 
quello standard, abbastanza lungo ma non da diventare vecchi, ho pensato di 
portare il codice qui sopra per il compiler della borland e farlo eseguire 
al mio P4 : in pratica non metto il //codice veloce(contenente asm), ma solo 
la gauss() (dentro al while e al for) visto che è lei che mi da problemi di 
tempo quando simulo il funz del DSP: morale della favola, ci mette mezzo 
secondo scarso scarso a fare il tutto... come diceva Giovanni ieri nel post 
precedente.
Allora alla fine mi domando, ma può veramente essere che emulando il DSP ci 
sia questo rallentamento ABNORME? si parla di scalare il tempo dell'ordine 
di 1:1000 circa a sto punto..

 dell'ordine di 1:1000 circa a sto punto..
Ebbene si... dopo una giornata posso dimostrare che questo BAST###### di un 
simulatore ci mette praticamente un tempo IMMENSAMENTE più grande..
Ho fatto la prova con due main() e due gauss() identici uno compilato x il 
DSP e girato sul sim e l'altro per il P4 ed è come far gareggiare una lumaca 
contro il pensiero. CRAP! E che non mi inventi di fare un test col profiler 
: tempo *= 10; (<- funziona anche col "*"?)
X oggi basta.. mi guarderò Naruto o Ranma!
Grazie sia a te Giovanni che a te Andrea
Newsgroup: it.comp.lang.c
Titolo: xchè non mi valuta il secondo Scanf?

Ho il seguente codice:
main()
{
  int num;
  long int fatt;
  char riprova;
  printf ("CALCOLO DEL FATTORIALE:\n");
  do
  {
    printf ("Numero ? ");
    scanf ("%d", &num);
    fatt = Fattoriale (num);
    printf ("%d! = %d\n", num, fatt);
    printf ("Vuoi riprovare [Y/N]? ");
    scanf ("%c", &riprova);
  }
  while (riprova == 'Y' || riprova == 'y');
}
Domanda: xchè il secondo scanf("%c", &riprova) non mi funziona (mi stampa a
schermo la stringa precedente e poi il programma termina....!!) ?!
Ciao
Duccio
http://www.catenaia.cjb.net


I'm not prejudiced, I hate everyone equally.

Newsgroup: it.comp.lang.c
Titolo: readme (please!!)

>
fatto tutto cio che riporta qui,io ho provato perciò a lanciare il
file djgpp.bat  che prima ho creato
ma viene fuori 
"impossibile trovare il percorso specificato"
 a questo punto non so che pesci prendere!
come devo fare? (cosa devo fare?)
grazie!

come devo fare? (cosa devo fare?)
riavviare il computer?!?
Ovviamente non ho letto tutto il mex, ed altrettuanto ovviamente sei
OT. Pero' il tuo e' un probl. di path. Se dopo aver riavviato non
funzia, se hai xp/nt/2000 puoi andare a vedere su pannello di
ctrl->sistema->variabili globali se Path e' settato correttamente (con
la directory dove c'e' l'eseguibile che vuoi lanciare), se no hai
fatto un errore nell'editare autoexec.bat.
Se non capisci quello che ho scritto, secondo me ti conviene lasciar
perdere e scaricare il dev c++
(
http://www.bloodshed.net/dev/devcpp.html
)
Ciao,
Zeppe

Newsgroup: it.comp.lang.c
Titolo: istruzioni macchina

salve
dove risiedono le istruzioni macchina di un moderno PC?
So' che la domanda ï¿œ strana, ma mi chiedevo se le primitive CPU, 
realizzavano fisicamente le istruzioni tramite hardware, e se le moderne 
CPU realizzano invece il proprio set tramite micro istruzioni di basso 
livello.
grazie

 tramite micro istruzioni di basso livello.
Dove sta la domanda?

 livello.
Dovresti postare su it.comp.hardware.cpu
Cmq si', le CPU x86 moderne (sia Intel che AMD) traducono al volo l'ISA x86 
in delle microistruzioni interne RISC-like (Intel le chiama uops, AMD rops).
Questo ti permette di costruire processori estremamente complessi 
(superpipelined, superscalar) pur mantenendo la compatibilita' con tutto il 
codice esistente (di generazione in generazione possono cambiare le uops 
interne, ma l'ISA x86 non cambia).
La traduzione e' molto complessa ed e' uno dei punti critici del processore.
Pleg

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

Come mai qundo uso gets(  ) gcc mi dà sempre il warning
"gets is dangerous and should not be used"?
Che pericoli ci sono? come risolvo?
Grazie
-- 
Vinicio
"In galera l'aria, quando riesce a passare, è ottima"
(Totò)

 Che pericoli ci sono? come risolvo?
gets() e` un residuato mantenuto per la compatibilita` con il passato. 
Poiche` e` spesso implementato come una macro (orrore!) non effettua 
nessun controllo sui tipi, in piu` non gestisce il range per il buffer 
di ingresso, per cui la segnalazione del compilatore e` coerente. Il 
consiglio e` di utilizzare fgets().
-- 
Baci,
Mony
Newsgroup: it.comp.lang.c
Titolo: Apertura file DAT

Qualcuno sa indicarmi un programma , o la procedura , per aprire file in
estensione DAT ?
grazie mille
giorgio

 in estensione DAT ?
err... la domanda e' inerente al linguaggio C?
Tanto per rimanere IT:
#include <stdio.h>
FILE *h;
h=fopen("file.dat","rb");
Cosa farne poi, spetta a te.
-- 
-=[]=---iAN CooG---=[]=-
ANTIFAN #1 di Simone Crisari

Newsgroup: it.comp.lang.c
Titolo: scrittura intelligente

Qualcuno sa dirmi dove posso trovare informazioni sull'algoritmo per creare
la scrittura intelligente? (il t9 dei cellulari)
grazie
                                                                    LoScara

 ha scritto nel messaggio
news:m2eSb.220486$_P.75...@news4.tin.it...

Io l'ho fatto per l'università. E' davvero divertente. Dai che non è
difficile, io poi ho dovuto farlo in TurboPascal, figurati !!!!

puoi darmi qualche dritta?

 difficile, io poi ho dovuto farlo in TurboPascal, figurati !!!!
Toglimi una curiosità: lo hai realizzato con alberi binari?



Hai usato trie ?
Augusto Pucci

Newsgroup: it.comp.lang.c
Titolo: Giochino con il preprocessore

Mi sarebbe comodo definire una cosa del genere:
  #define PIN PORTA_PA0
e creare una macro
  #define DIR(x) ???
che a partire dal valore di PIN mi estragga la lettera A (dopo PORT) e
il numero 0 (ultimo carattere) e mi crei il seguente simbolo:
  DIRA_DA0
In pratica devo sostituire PORT con DIR e _P con _D.
Si può fare con il solo preprocessore C?

 Si puï¿œ fare con il solo preprocessore C?
Che io sappia, no, e sarei molto sorpreso se qualcuno mi venisse a dire 
che si puï¿œ.
Puoi invece ottenere facilmente il contrario, ovvero concatenare pezzi 
di macro, tipo
#define PIN(x) PORTA_PA ## x
#define DIR(x) DIRA_DA  ## x
--> PIN(0), DIR(0), ...
In alternativa, puoi fare una cosa sadica del tipo
#define PIN(x) qwerty_ ## x
#define qwerty_PORTA_PA0 DIRA_DA0
#define qwerty_PORTA_PA1 DIRA_DA1 /* etc etc */
per cui PIN(PORTA_PA0) viene rimpiazzato da DIRA_DA0
Divertiti ;D
Newsgroup: it.comp.lang.c
Titolo: Matrici e doppi puntatori

 Lemmie guarda, c'e' Madonna, e Linus, e...  aiutami, laggiu'...
Bill?  ;-)
		-- Da un posting su comp.os.linux.misc
Today is Sweetmorn, the 67th day of Bureaucracy in the YOLD 3168

 }
Scegliendo la prima strada:
void alloca_mat(int ***M, int ord) {
        int i;
        if ((*M = malloc(ord * sizeof(int *))) == NULL) {
                printf("...");
                exit(EXIT_FAILURE);
        }
        for(i = 0; i < ord; i++)
                if (((*M)[i] = malloc(ord * sizeof(int))) == NULL) {
                        printf("....");
                        exit(EXIT_FAILURE);
                }
}
Mentre nel secondo caso avresti questo prototipo:
int **alloca_mat(int ord);
L'implementazione la lascio per esercizio ;)
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
"L'abilita` politica e` l'abilita` di prevedere quello che
 accadra` domani, la prossima settimana, il prossimo mese e
 l'anno prossimo. E di essere cosi` abili, piu` tardi,
 da spiegare  perche' non e` accaduto."

 }
Un'altra cosa che mi era sfuggita: non liberi la memoria allocata:
void free_mat(int **M, int ord) {
        int i;
        for(i = 0; i < ord; i++)
                free(M[i]);
        free(M);
}
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
"Ci sono le balle , le megaballe e le statistiche".
 Mark Twain

 }
Hmm. Non dovrebbe essere M[i] = malloc(ord*sizeof(int))?
O ancora meglio, M[i] = malloc(ord*sizeof(*ord))?
Non escludo che ci siano altri errori, ne' di avere detto una cavolata :-)
Saluti,
Lanugo
Newsgroup: it.comp.lang.c
Titolo: quando uso realloc che succede ?

Salve a tutti,
che succede ai dati gia' esistenti in un vettore allocato
dinamicamente quando, riallocando con realloc, lo ingrandisco ?
I nuovi dati vanno tutti in coda (e quindi quelli precedenti restano
dov'erano) ?
E' un comportamento standard ( in particolare valido sia sotto Win che
sotto Linux) ?
Grazie.

 sotto Linux) ?
E' un comportamento standard della realloc. Che tu usi Winz o sistemi
operativi migliori il prodotto non cambia.
Byes
FusionFai

 !!
non proprio... visto che realloc cerca la zona di memoria contigua libera che
"fitta" le tue esigenze.  se necessario sposta tutta la memoria e ti torna un
indirizzo diverso da quello iniziale. devi stare ben attento a questo.
i dati restano dov'erano rispetto all'inizio della zona allocata, ma rispetto agli 
indirizzi assoluti di memoria, non e' assolutamente detto.
bye

 indirizzo diverso da quello iniziale. devi stare ben attento a questo.
Si, su questo hai certamente ragione. Tuttavia se devo fare considerazioni
di questo tipo allora sto sviluppando qualcosa di ben preciso e non
totalmente standard!
Io uso la reallocc perchè ho bisogno di ulteriore memoria. Alla fine il
target generico è quello di avere la memoria non di sapere dove e come mi
viene allocata!
Byes


supponi questo scenario:
hash table --> array di liste concatenate.
reallochi l'array, tutti i puntatori prev (nei primi elementi) delle liste devono essere rimessi a posto
altrimenti ti puntano alla zona vecchia e non a quella nuova reallocata.
e non mi pare che le hash table non siano sandard... ;)
tutto dipende dall'uso che devi fare della zona da reallocare...
bye

Newsgroup: it.comp.lang.c
Titolo: Piccola Richiesta

Salve. Qualcuno sa dove posso trovare dei listati di esempio di
comunicazione fra processi (IPC) ad esempio client-server, possibilmente per
Linux ?
Grazie

Ciao,
prova ad andare a:
http://www.kohala.com/~rstevens/
Sono libri su UNIX e sono presenti anche i sorgenti degli esempi.
Penso che funzionino perfettamente anche su Linux senza apportarvi alcuna
modifica.
Ciao, Luca
int _,__,___=0x3e8,____,_____[2,21,1978];main(){for(;__<=___;_____
/*  Luca Caucci'78  */ [__++]++);for(__=1,printf("e = 2.");____=0,
/*
cau...@cs.unibo.it
*/ __<=___;printf("%06d",____),++__)for(_=___;
_>=2;_____[_]=(____+=___*___*_____[_])%_,____/=_--);printf("\n");}

Newsgroup: it.comp.lang.c
Titolo: facile lettura da file

salve a tutti, sto provando a far leggere un file composto da un array
di 10 elementi e di farlo stampare sul display ma l'output è strano,
mi dà solo il secondo, il terzo e il quarto elemento. il programma mi
sembra facile, dove sbaglio?
#include<stdlib.h>
#include<stdio.h>
int main() {
  int n;
  int vett[10];
  FILE *fd;
  int i;
		/* apre il file */
  fd=fopen("array.dat", "r");
		/* verifica errori in apertura */
  if( fd==NULL ) {
    perror("Errore in apertura del file");
    exit(1);
  }
		/* legge il numero di elementi del vettore */
  fscanf(fd, "%d", &n);
		/* legge l'array */
    for(i=0; i<=n-1; i++)
      fscanf(fd, "%d", &vett[i]);
		/* stampa l'array */
  for(i=0; i<=n-1; i++)
    printf("%d\n", vett[i]);
		/* chiude il file */
  fclose(fd);
  return 0;
}

 }
Non ha indicato il contenuto del file per cui non funziona quindi è
difficile dire che comportamento ha il programma e perchè non funziona.
Se ad esempio al ciclo i-esimo la fscanf non trova quello che si aspetta nel
file, la lettura di fscanf non viene eseguita. Puoi controllare il valore
ritornato da fscanf.

 Non c'è un controllo sul valore di n che non deve superare 10....
non deve "superare" 9
Ciao :)
-- 
Cybertoldo
Per rispondermi via email, sostituisci moc.liamg con 
gmail.com

     for(i=0; i<=n-1; i++)
...e ho scritto una ca22ata :)
Pardon!
Ciao

Newsgroup: it.comp.lang.c
Titolo: cambiare il colore del testo

Come si fa a modificare i colori del testo e dello sfondo?
Ad es, scrivere in blu in uno sfondo tutto verde?
Ho provato con textattr, ma non ci capisco niente, non
funziona! :-((
--
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
e-mail: 
cerch...@ciaoweb.it
 
33813...@tim.it
Bye byte, Cerchietto
La vita, senza una meta, è vagabondaggio
(Seneca)
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

Ciao,
# include <conio.h>
color(numero);      // numero tra 1 e 12 penso
cprintf("testo" );


che compilatore usi?

 che compilatore usi?
il DJGPP


 ha scritto nel messaggio
news:9sevjc$njv$1...@newsreader.mailgate.org...

Beh allora é semplice....prova cosě:
#include<conio.h>
............................
int main()
{
      clrscr();
      textattr(123);
      cprintf("prova di testo colorato");
      getch();
      return 0;
 }

  }
Ecco un copiaincolla di quello che ho scritto:
====================
#include<stdio.h>
#include<conio.h>
main()
{
 clrscr();
 textattr(123);
 cprintf("Prova di testo colorato");
 getch();
}
====================
Ma il colore č quello normale, non cambia proprio nulla.


 ha scritto nel messaggio
news:9siq75$gba$1...@newsreader.mailgate.org...

Allora prova a postare su comp.os.msdos.djgpp...se non lo sanno loro....

Ciao,
fallo come l'ho detto io!
#include <conio.h>
void main (void) {
color(10);             // o un altro numero
cprintf("prova");
}

 Allora prova a postare su comp.os.msdos.djgpp...se non lo sanno loro....
Ho fatto un ultimo tentativo, strano: questa volta ha funzionato,
non riesco a capire perché prima non andava.


Newsgroup: it.comp.lang.c
Titolo: COme si installa il borland c++??

Ho scompattato e installato il freecommandlinetools.exe ma non riesco a
farlo partire ma contiene solo librerie o tutto il programma??
Devo aggiungere qualchecosa nel file autoexe.bat

 wrote in message 8hosnl$dpi$1...@news.IT.net...


Probabilmente tu parli del COMPILATORE turbo C++ (il builder é un ambiente
integrato)....in questo caso vai sul sito della borland (
www.borland.com
)
nella sezione museum e segui il link per il TURBO C++ 5.5

 wrote in message
8hp2k1$u50$1...@pegasus.tiscalinet.it...


 no la versione 2.00
Ma te l'ho già detto!!!
www.borland.com/bcppbuilder/freecompiler
così ti risparmio la pena di cercarlo nel sito ;-)

programma esterno per scrivere?
Nella versione scaricata dal sito Borland (di 7 o 8 MB se non ricordo
male) trovi solo il compilatore e nient'altro. Se invece la prendi da
un CD allegato ad una rivista allora puo' anche essere completa
(dipende da cosa hanno deciso gli editori) con editor, programma
d'installazione, help, esempi, debugger, etc... Questa versione pero'
non e' scaricabile (occupa un intero CD).
ciao