mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c
Titolo: Dichiarazione delle variabili con due diversi compilatori

Salve, ho un piccolo problema: sto usando 2 diversi compilatori: uno è il 
Borland, l'altro è un compilatore apposta pre un DSP della TI; il mio 
problema è il seguente:
Scrivendo in un main un espressione del tipo:
stream = fopen("myfile.txt","w");
short var[4] = {1 ,2 ,3 ,4};
mi viene accettata dal compilatore Borland, mentre l'altro compilatore 
(fornito su un interfaccia IDE), genera il seguente messaggio di errore in 
fase di compilazione:
"main.c", line 87: error: declaration may not appear after executable 
statement in block
Allora mi chiedo: può essere che il compilatore per il DSP pretenda che le 
variabili siano dichiarate prima di eseguire del codice in modo che venga 
allocato lo spazio ad esse necessario per evitare conflitti di memoria tipo? 
o comunque perchè così esso richiede come regola affinchè non vengano 
eseguite poi casualmente operazioni su quelle locazioni
____________________
Se la so, rispondo sempre. 


Non posso garantire a proposito dell'ultimo standard,
ma fino a qualche tempo fa nel C le dichiarazioni dovevano precedere
le istruzioni.
Quindi all'inizio di una funzione o di un blocco metti tutte
le dichiarazioni come short var[4] = {1 ,2 ,3 ,4}; e dopo
metti le istruzioni come stream = fopen("myfile.txt","w");
In C++ (e quello Borland probabilmente e' un compilatore C++) invece si
possono mischiare le due cose. Magari quello per la TI e' puro C.
Per stare sul sicuro metti sempre prima le definizioni.
ciao,
g.

 fase di compilazione:
Nel C tradizionale (C89) le dichiarazioni dovevano comparire nella parte
iniziale del blocco prima di ogni istruzione. Questa limitazione non esiste
nel C99 (e nemmeno nel C++). 
Può darsi che il Borland compili in modalità C99 (o C++), mentre l'altro
compilatore assuma lo standard C89. 
Max
 

 ciao,
! g.razie!

 compilatore assuma lo standard C89.
Per la stessa ragione è possibile che tale compilatore accetti dichiarazioni 
MA NON inizializzazioni di variabili al di fuori del main???Perchè sembra 
proprio che mi allochi lo spazio ma non imposti i valori....

 valori....
Aggiungo che non accetta "printf" ma solo "puts" (e si ho incluso stdio.h).

 
E ma allora č il compilatore che fa schifo...!!
o hai avuto problemi di installazione!!! :-)

 ha scritto nel messaggio 
news:d7knj7$fhc$1...@newsreader.mailgate.org...

Scusa, rettifico, ho sbagliato vocabolo... l'fprint lo "accetta" ma poi si 
pianta totalmente...
col puts invece avanza: CON ENTRAMBI NON MI FA VEDERE UN C.... NE SU SCHERMO 
NE SU FILE NE DA NESSUNA PARTE!!!!!
Sono disperato!!!!
E non posso fare a meno di usare il compilatore per il DSP anche perchč meta 
delle funzioni sono scritte in ASM e io nn ci voglio neanche ficcare il naso 
nelle librerie della texas...
Domani andrņ dal docente a chiedere mi sa... 

 ha scritto nel messaggio 
news:d7knj7$fhc$1...@newsreader.mailgate.org...

Oh ... la vedo meno nera... finamente qualcosa viene inizializzato!!! e si 
modifica...
Penso che farei davvero prima a riscrivere il codice che cercare di capire 
quello gia scritto....
Newsgroup: it.comp.lang.c
Titolo: A chi piacerebbe programmare giochi?

Io conosco un SDK che probabilmente voi non conoscete.
Si tratta di una chat ma é piu' di una chat , é 3D e ha un SDK ideale per
fare giochi e altre applicazioni molto divertenti e anche utili. Si possono
fare mondi propri e c'é un vero e proprio mercato dei programmatori. I
giochi e i bots con questo SDK sono molto ricercati, alcuni fanno anche bei
soldini con queste cose.
La softwarehouse di questo programma é in borsa, allora i soldi girano mi
sa.
Comunque rimane una cosa divertente come ambiente per programmare.
Chi ha interesse a piu' info me lo faccia sapere, conosco questo sistema
come le mie tasche e ho anche un mondo mio che potrebbe essere utile a chi
vuole esperimentare con questo SDK per linguaggio C.
gu...@swissonline.ch

a me







Newsgroup: it.comp.lang.c
Titolo: problemi con istruzioni asm

sto' usando Borlad C++Builder 4.
ho cercato di compilare un programma che contiene istruzioni in
assembler , ma il compilatore mi dà il seguente errore :
"[C++ Warning] Project2.cpp(26): W8002 Restarting compile using
assembly."
Ho cercato nelle varie proprietà del compilatore  se c'è qualche
riferimento all'assembler , ma niente. Nell'help non mi viene dato
nessun aiuto .
AIUTATEMI !!!!
il listato è il seguente :
#include <stdio.h>
#include <conio.h>
void initgraph();
void closegraph();
main ( )
{
initgraph();
while (!kbhit()){}
closegraph();
return (0);
}
void initgraph( )
{
 asm{
     mov ax,13h
     int 10h
    }
 }
void closegraph( )
{
  asm{
      mov ax,3h
      int 10h
     }
}
Grazie ciao
                            Fil

 nessun aiuto .
in genere questo era un warning usato dal compilatore per dire che
avendo trovato selle istruzioni in assembler abilitava AUTOMATICAMENTE
la compilazione con un passo aggiuntivo: quello della generazion e del
sorgente assembler e della sua 'compilazione' tramite assemblatore.
controlla che venga generato effettivamente il file .obj corrispondente

Marco Colandrea wrote:

No , mi crea solo un file .asm , ma con questo non so' cosa fare . Scusa la
mia ignoranza . hai qualche idea ?

sto' usando Borlad C++Builder 4.
Il Borland C++ 4 B. se in versione standard non supporta (CREDO)
l'assembler inline .

 assembly."
Questo non e' un errore! gli errori sono segnalati dopo (se ce ne sono).
Se non vuoi questo messaggio nel BC++3.1 devi scrivere come prima linea la
direttiva
#pragma inline
questo dice subito al compilatore che nel codice ci sono istruzioni
assembler, nel tuo caso invece il compilatore se ne accorge dopo aver gia'
compilato un pezzetto e quindi deve buttar via tutto e ricompilare generando
l'asm, tutto qui, non e' un errore!
ciao
donCiccio

 mia ignoranza . hai qualche idea ?
forse ci vuole l'assemblatore installato ( TASM nel caso di prodotti
Borland ) ma non ne sono sicuro.

 }
··· Vito Dantona  ···
http://www.vitus.cjb.net
vi...@milanmania.com
ICQ: 18231643
«If I can see further than others,
    it is by standing on the shoulders of giants» (I. Newton)

 ha scritto nel messaggio
news:ZC6R5.75222$BF.26...@news.infostrada.it...

Newsgroup: it.comp.lang.c
Titolo: Strutture con stringhe costanti o puntatore a stringhe costanti?

Devo definire un lungo array costante di strutture al cui interno ci
deve essere un riferimento ad una stringa
costante.
Se definissi :
struct s1 {
  char stringa[20];
  ...
};
dovrei fissare la dimensione della stringa (20) per tutti gli elementi
dell'array, quindi perdendo molto spazio
per le stringhe più piccole (e sono molte, 20 sarebbe la dimensione
massima utilizzata solo una volta).
Se definissi:
struct s2 {
  const char *stringa;
  ...
};
riuscirei a non sprecare spazio, ma sarebbe illeggibile il codice:
const char *str1 = "Prima stringa"
const char *str2 = "Seconda stringa"
...
const struct s2 array[] = {
  { str1, ... },
  { str2, ... },
  ...
};
In pratica devo separare l'elenco delle stringhe dalla definizione
degli elementi dell'array.
C'è qualche altro modo per dire al C di definire la stringa costante e
riportare solo il riferimento?
Qualche macro del tipo:
const struct s2 array[] = {
  { MAKESTRING("Prima stringa"), ... },
  { MAKESTRING("Seconda stringa"), ... },
  ...
};

 degli elementi dell'array.
In realtà non è vero:
const struct s2 array[] = {
   { "Prima stringa", ... },
   { "Seconda stringa", ... },
   ...
};
funziona a meraviglia :)
Newsgroup: it.comp.lang.c
Titolo: gotoxy non c'è!

Ciao a tutti,
ho Visual C++ 6.0 e volendo utilizzare la funzione gotoxy ho incluso la
libreria conio.h. Il compilatore mi risponde però con
.... warning C4013: 'gotoxy' undefined; assuming extern returning int
Linking...
prova.obj : error LNK2001: unresolved external symbol _gotoxy
Debug/prova.exe : fatal error LNK1120: 1 unresolved externals
ho controllato in conio.h ed in effetti la gotoxy non è definita; il
problema è che ho controllato in tutte le librerie disponibili e non
esiste in nessuna!
Come devo fare per utilizzarla? oppure esiste una funzione equivalente?
Ciao,
Marco

Eggia bello mio ;))
Devi capire che il "dos" che usi con VC++6 (ma anche il 5) č solo una
emulazione del Dos, anzi no, č solo una console di Windows... perciň soffre
di alcune limitazioni.
Tutte le cose fighette di Dos sono sparite, come la gestione degli interrupt
del Dos, e molte funzioni della conio.h ... cerca pure crlscr() se vuoi ;)
Dome
--
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
PC Brain Official Web Site
http://digilander.iol.it/pcbrain
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

> del Dos, e molte funzioni della conio.h ... cerca pure crlscr() se vuoi ;)
Ma clrscr() non era solo in Borland? In effetti i Borland c++ Builder 3
c'è.
Cecco

c'è.
In Microsoft e' :
_clearscreen(_GCLEARSCREEN)
lunghettina eh ?
ciao, acc.   
a...@libero.it


Non basta usare system("cls")?

Daccordo, ma clrscr a parte, per la gotoxy non ci sono speranze?
Non ne esiste una equivalente?


si.. io ci sono riuscito.. non ricordi dove ho messo il codice.. ma appena
lo trovo te lo posto...
cmq ho risolto ricorrendo alla liberira 'ncurse.h' mi sembra si
chiamasse....

 wrote in message
news:3B9D12C6...@libero.it...

Cerca in MSDN:
SetConsoleCursorPosition (si trova in wincon.h)
e parti per altre avventure, non ho mai provato le
funzioni console del win32.
J.

Azz!
Che significa in Microsoft?
VC++?
Ho il VC++ 5.0 e non c'č!


Non basta usare system("cls")?
Scomodare la shell per cancellare lo schermo ?
Piuttosto passo al Cobol...
ciao, acc.   
a...@libero.it

Ho il VC++ 5.0 e non c'č!
Consolati, non ti perdi molto...
In Visual C devi usare le API di windows per gestire lo schermo, ci
sono una serie di funzioni per gestire il 'console mode', nella
fattispecie per cancellare lo schermo puoi usare la
ScrollConsoleScreenBuffer()
ciao, acc.   
a...@libero.it
Newsgroup: it.comp.lang.c
Titolo: Socket

Salve perchè questi 2 codici client e server non vanno...
[CODE]
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
void ChiudiSocket(int sock)
{
  close(sock);
  return;
}
int CreaSocket(char* Destinazione, int Porta)
{
  struct sockaddr_in temp;
  struct hostent *h;
  int sock;
  int errore;
  temp.sin_family=AF_INET;
  temp.sin_port=htons(2009);
  h=gethostbyname(Destinazione);
  if (h==0)
  {
    printf("Gethostbyname fallito\n");
    exit(1);
  }
  bcopy(h->h_addr,&temp.sin_addr,h->h_length);
  sock=socket(AF_INET,SOCK_STREAM,0);
  errore=connect(sock, (struct sockaddr*) &temp, sizeof(temp));
  return sock;
}
void SpedisciMessaggio(int sock, char* Messaggio)
{
  printf("Client: %s\n",Messaggio);
  if (write(sock,Messaggio,strlen(Messaggio))<0)
  {
    printf("Impossibile mandare il messaggio.\n");
    ChiudiSocket(sock);
    exit(1);
  }
  printf("Messaggio spedito con successo.\n");
  return;
}
int main(int argc,char* argv[])
{
  int DescrittoreSocket;
  DescrittoreSocket=CreaSocket("127.0.0.1",1745);
  if ((argc==2)&&(strcmp(argv[1],"exit")==0))
    SpedisciMessaggio(DescrittoreSocket,"exit");
  else
    SpedisciMessaggio(DescrittoreSocket,"Un messaggio");
    ChiudiSocket(DescrittoreSocket);
  return 0;
}
[/CODE]
[CODE]
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <fcntl.h>
int CreaSocket(int Porta)
{
  int sock,errore;
  struct sockaddr_in temp;
  sock=socket(AF_INET,SOCK_STREAM,0);
  temp.sin_family=AF_INET;
  temp.sin_addr.s_addr=INADDR_ANY;
  temp.sin_port=htons(2009);
  errore=fcntl(sock,F_SETFL,O_NONBLOCK);
  errore=bind(sock,(struct sockaddr*) &temp,sizeof(temp));
  errore=listen(sock,7);
  return sock;
}
void ChiudiSocket(int sock)
{
  close(sock);
  return;
}
int main()
{
  char  buffer[512];
  int DescrittoreSocket,NuovoSocket;
  int exitCond=0;
  int Quanti;
  DescrittoreSocket=CreaSocket(1745);
  printf("Server: Attendo connessioni...\n");
  while (!exitCond)
  {
       if ((NuovoSocket=accept(DescrittoreSocket,0,0))!=-1)
    {
      if ((Quanti=read(NuovoSocket,buffer,sizeof(buffer)))<0)
      {
         printf("Impossibile leggere il messaggio.\n");
         ChiudiSocket(NuovoSocket);
      }
      else
      {
         buffer[Quanti]=0;
         if (strcmp(buffer,"exit")==0)
              exitCond=1;
         else printf("Server: %s \n",buffer);
      }
      ChiudiSocket(NuovoSocket);
    }
  }
  ChiudiSocket(DescrittoreSocket);
  printf("Server: Terminato.\n");
  return 0;
}
[/CODE]

 Salve perchè questi 2 codici client e server non vanno...
<snip>
Io inizierei col controllare tutte quelle variabili "errore". Magari
mettere qualche perror o assert da qualche parte ti farebbe vedere
dov'è il problema.
Newsgroup: it.comp.lang.c
Titolo: [?] K&R

Ciao a tutti.
Ho letto la vostra discussione alcuni giorni fa'
- Libri e compilatori per principianti
cosi' non appena ne ho avuto il tempo mi sono precipitato nella mia libreria
di fiducia all'indirizzo
http://www1.clbooks.com/shop/browse.cl?SubjectCode=PG
ed ho trovato
The C Programming Language, Second Edition; Kernighan, Brian W. / Ritchie,
Dennis M.
Prentice Hall; 05/1988; Hardcover; $60.00; 272 pages.
Prima di fare l'acquisto, pero', volevo chiedervi alcune cose:
- conferma che sia questo il libro in questione
- aggiungendo una ventina di dollari per la spedizione, pensate sia il caso
di prenderlo ugualmente, o e' forse piu' conveniente cercarlo direttamente
in zona.
Premetto che ho gia' guardato in alcune librerie locali.
Risultato?
Neppure l'ombra!!
Grazie a tutti per la cortesia.
Angel



Ti confermo che il testo č proprio quello: l'ho quě davanti a me. L'ho
acquistato per corrispondenza circa un anno fa da un catalogo della
"Jackson Libri". Il testo che ho io č in versione italiana.
"Linguaggio C"  Seconda edizione - Jackson Libri S.r.l. - 1989 di
Brian W.Kernighan & Dennis M.Ritchie. Magari contatta la casa
editrice: potrebbe essere che hanno ancora qualche copia, oppure puň
darsi che sia in ristampa. Il prezzo di copertina č di Lit. 46.000.
Ciao. Loris

...


Mille grazie per l'info.
A presto.
Angel
Newsgroup: it.comp.lang.c
Titolo: Disabilitare lo screensaver su Linux

Ciao a tutti!
Sto scrivendo un programma che, tramite le NCurses, mi fa da interfaccia
semigrafica per un microcontroller.
Tutto bene, ma ho un problema: visto che l'interfaccia viene usata
praticamente solo tramite comandi vocali (e non vengono praticamente mai
premuti tasti) dopo qualche minuti il Laptop sul quale il programma gira
mette il terminale in Powersave.
Ora, e' possibile, tramite il comando "setterm -powersave off -blank 0"
disabilitare questo Powersave, ma mi piacerebbe che fosse il programma
stesso a leggere il valore del Powersave all'inizio, spegnere l'opzione e,
quando il programma esce, reimpostarlo al valore iniziale.
Non sono pero' riuscito a capire come posso farlo da programma...
Qualcuno sa darmi una qualche dritta o almeno un indizio su cosa cercare
esattamente?
Grazie
Luca Bertoncello
(
luca...@lucabert.de
)
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Non sono pero' riuscito a capire come posso farlo da programma...
Forse la funzione command() fa al caso tuo: ti consente di eseguire
comandi della shell da dentro al tuo programma.
ciao
Giacomo

Giacomo Degli Esposti ha scritto:


si, questa possibilita' la conoscevo (anche se avrei forse usato la
system), ma mi sarebbe piaciuto chiamare direttamente le funzioni di
sistema che il comando setterm chiama...
Solo che non so quali sono...
Idee?


 
stai chiedendo uno cosa molto particolare... e sulla quale non ho
nessuna esperienza per� considerando che setterm usa terminfo potresti
iniziare a dare un occhiata qua:
http://linux.die.net/man/3/putp

 sistema che il comando setterm chiama...
guardare il codice sorgente di setterm potrebbe essere un'idea.
Ciao Jack

Newsgroup: it.comp.lang.c
Titolo: funzioni nelle librerie

Sapete per caso dove posso trovare l'elenco completo delle funzioni C89/99
suddivise per libreria, cioč una qualche lista di ogni libreria standard.
Non ho trovato niente in giro.
Grazie

Tu probabilmente intendevi dire "divise per header". La libreria standard
del C è singola :-)
Dunque... Insieme alle glibc (le librerie C del Linx) c'è il man delle
glibc. Dovrebbe descrivere tutte le glibc (che sono circa un soprainsieme
del C89). Oppure su 
http://msdn.microsoft.com
 cerca run-time library
reference. Poi dentro ci dovrebbe essere un alphabetical function reference
con tutto quello che cerchi (occhio che a te interessano solo le funzioni
che non iniziano per _ ). Oppure puoi cercarti un documento che definisca lo
standard C89 e leggerti quello (praticamente illeggibile).
--- bye
Newsgroup: it.comp.lang.c
Titolo: spedire email tramite programma C

Salve a tutti,
qualcuno mi potrebbe rispondere, con un piccolo esempio,
su come spedire email, in semplice formato testo, da programma C compilato
tramite il compilatore DJGPP per DOS o tramite il compilatore DEVCC della
bloodshed?
( In java gia' avevo risolto questo problema con successo.
Essendo in una rete intranet, avevo aperto una socket
(sulla porta num.
25) al mio server di posta elettronica
e poi ho mandato uno stream (in
output) su questa porta
tramite il semplice protocollo SMTP.).
Qualcuno
mi puo' aiutare?
Ciao.
Fab.
--------------------------------
Inviato via 
http://usenet.iol.it


Per il DJGPP esiste la libreria libsocket....sul sito ufficiale trovi la
documentazione che ti serve per fare quello che vuoi....e anche di più

 wrote in message
news:192Z171Z5Z18Y9...@usenet.iol.it...


lo
vuoi lo stesso dimmelo.
No grazie,
ho gia' risolto il problema
tramite la libreria, per il djgpp,
libsocket consigliata da Abacuc .
Grazie mille a tutti quelli che mi hanno aiutato a risolvere questo
problema.
Ciao.

Newsgroup: it.comp.lang.c
Titolo: strane approssimazioni....

Ciao a tutti!!
Io ho scritto questo codice:
#include <math.h>
#include <stdio.h>
int main (void)
{
  float m=45631, ultima;
  m=m/10;
  ultima=(m-floor(m))*10;
  printf("%f, %f, %f\n\n", ultima, m-floor(m), (m-floor(m))*10);
}
e banalmente desidererei veder scritto su schermo:
1.000000, 0.100000, 1.000000
cosa che non accade, perche' scrive:
1.000977, 0.100098, 1.000977
Ma non capisco proprio perche', in quanto non ci sono approssiazioni da
fare.
Chi lo sa?
Zeppe

#include<stdio.h>
#include<math.h>
int main()
{
  double m=45631.0,ultima;
  m/=10.0;
  ultima=(m-floor(m))*10.0;
  printf("%f, %f, %f\n",ultima,m-floor(m),(m-floor(m))*10.0);
  return 0;


fare.
Il problema e' che 0.1 e' un numero relativamente semplice
quando lo esprimiamo in decimale, ma si tratta di un numero
periodico quando lo esprimiamo in binario.
Poiche' la rappresentazione dei float utilizza proprio il
sistema binario sono presenti delle approssimazioni anche
dove, secondo il nostro sistema decimale, queste
approssimazioni non sarebbero necessarie.
Tieni anche presente che nei tuoi calcoli utilizzi differenze
di numeri grandi e molto simili fra loro. Questo tipo di
calcolo e' esattamente quello che mette in maggior risalto
i problemi di approssimazione. In alcuni casi gli algoritmi
utilizzati su calcolatore sono pensati in modo da evitare
il piu' possibile queste cancellazioni.
Il problema con lo 0.1 e' cosi' grave che nei programmi che
fanno calcoli in valuta l'utilizzo di float/double per
rappresentare importi e' fortemente sconsigliabile.
In generale si preferisce un altro tipo di rappresentazione
dei numeri con la virgola (chiamato "BCD", molto utilizzato
ad esempio in COBOL) oppure si lavora solo con numeri interi
facendo tutti i calcoli ad esempio in centesimi.
Andrea
--
Andrea Griffini, Programmer
http://www.netservers.com/~agriff

   return 0;


'zzo dici?
Aspetto un chiarimento.

Prova a far girare il programma da te "corretto", avrai la risposta...
Scusami se ti ho offeso, forse sono stato un po' troppo colorito.
Ciao
"Alex" <Nom...@wow.boh> ha scritto nel messaggio
news:oHLE5.3778$Z95.1...@news.infostrada.it...


Newsgroup: it.comp.lang.c
Titolo: Chi ha letto il Deitel&Deitel?

Salve a tutti , se tra i frequentatori di questo
NG , c'è qualcuno che ha letto il Deitel&Deitel
ed  ha voglia di postare degli esercizi che 
si trovano sul libro?
Io ho il K&R , ma , almeno per me, sono
troppo complicati.
Grazie a tutti
Ciao

 ha scritto nel messaggio
news:aBGT9.104450$TC5.3...@twister1.libero.it...

Newsgroup: it.comp.lang.c
Titolo: =>> K&R - e-siste una versione scaricabile ??

esiste una versione di K&R scaricabile via internet (COMPLETA)???
io ho trovato solo le vecchie dispense risalenti agli anni '70
ciao 
jacopo

io ho trovato solo le vecchie dispense risalenti agli anni '70
No non esiste dato che è un libro soggetto a copyright
-- 
Lawrence "Rhymes" Oluyede (
rhy...@myself.com
)
"Per cambiare, per diventare un'altra
cosa dobbiamo prima sapere cosa siamo"
(Bruce Lee)

No non esiste dato che è un libro soggetto a copyright
Tempo fa' si trovata su un sito bulgaro, in versione inglese, ma non
era una cosetta del tutto legale (attualmente non esiste piu')... ma
visto che si trova la bibbia del TCP in html, non vedo perche' un
giorno tu non possa essere cosi' fortunato da "incappare per puro
caso" nel K&R :)
Mox.

io ho trovato solo le vecchie dispense risalenti agli anni '70
Il Kernighan & Ritchie si acquista.
-- 
Andrea Laforgia (
walkie...@libero.it
)
"Usenet is a strange place" [Dennis Ritchie]

 Andrea Laforgia (
walkie...@libero.it
)
.. va beh dai , sappiamo che sei un patito del K&R
ma e meglio per i nuovi del C , un altro libro piuttosto che K&R
Ciao Roberto

 ma e meglio per i nuovi del C , un altro libro piuttosto che K&R
Non e' vero.  Il K&R va bene per chi ha voglia di imparare.
Non vedo, poi, cosa c'entri la tua risposta con la mia.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

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

Salve a tutti, se uso un ciclo
while in questo modo:
while( i!=-1 || cont<9){
scanf("%d");
..}
con || non riesco a uscire
se non dopo essere arrivato
a 9 input, se invece uso i !=-1 && cont<9
allora posso uscire dal ciclo 
anche tramite -1.Perche?
Grazie a tutti
Ciao

 ..}
forse se metti scanf("%d", &i); funziona ?

Salve a tutti, se uso un ciclo
while in questo modo:
while( i!=-1 || cont<9){
scanf("%d");
..}


 anche tramite -1.Perche?
perche' || e' OR e && e' AND !!!!
con && entrambe devono essere vere per continuare il ciclo. Quindi se
metti -1 e' falsa e quindi esci.
con || basta che una delle due sia vere per continuare il ciclo. Quindi se
metti -1 ma cont e' minore di 9 NON esci.
Basta andarsi a vedere i due operatori in questione, no?!?
Ciao

 anche tramite -1.Perche?
Perchè non hai chiaro gli operatori logici.
L'operatore or ritorna vero quando almeno una delle due espressioni è vera.  
Quindi finchè count è minore di 9 l'intera espressione è vera, 
indipendentemente dal valore di i...
Newsgroup: it.comp.lang.c
Titolo: Esistono librerie C che ...

... convertono funzioni VB?
Dovrei fare un porting di un'applicazione VB in ANSI C e ci sono
parecchie funzioni di Visual Basic (ad es. la format, quelle sulle
date,ecc...) che vorrei evitare di riscrivere.Ho cercato disperatamente
su google,ma non ho trovato niente.
Qualsiasi aiuto sarebbe per me molto importante.
Grazie a TUTTI!
danny
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG



>Dovrei fare un porting di un'applicazione VB in ANSI C e ci >sono parecchie
funzioni di Visual Basic (ad es. la format, >quelle sulle date,ecc...) che
vorrei evitare di riscrivere.
Prova questo: 
http://groups.yahoo.com/group/BCX/
, è un traduttore da Basic a C . Puoi prendere spunto e vedere nel sorgente
generato in che modo vari comandi Basic sono convertiti in funzioni C.
Attenzione che molto spesso, invece di tradurre in una conveniente funzione
C che già esiste, genera un codice proprio. Quindi verifica sempre.
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

Newsgroup: it.comp.lang.c
Titolo: Problema installazione con DJGPP

Ciao,
ho provato ad installare il DJGPP, seguendo tutte le istruzioni dei vari
tutorial,
tuttavia ho un errore: "Environment variable DJGPP point to a file
'C:\djgpp\djgpp.env' which does not exist".
Eppure il file esiste e le configurazione "dovrebbero" essere giuste.
Ecco il mio AUTOEXEC.BAT:
"mode con codepage prepare=((850) C:\WIN95\COMMAND\ega.cpi)
 mode con codepage select=850
 keyb it,,C:\WIN95\COMMAND\keyboard.sys
 rem S3REFRSH 8980
 SET PATH=C:\PROGRA~1\ESAFE\PROTECT;%PATH%
set djgpp=c:\djggp\djgpp.env
set path=c:\djgpp\bin;%PATH%"
ed il mio CONFIG.SYS:
"device=C:\WIN95\COMMAND\display.sys con=(ega,,1)
Country=039,850,C:\WIN95\COMMAND\country.sys
FILES=60"
Il DJGPP è installato in c:\djgpp, dove è presente il file djgpp.env.
C'è qualcuno che sa dirmi dove sbaglio?
Grazie, Paolo
-- 
Posted from root@[212.69.128.10] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 set djgpp=c:\djggp\djgpp.env
               ^^^^^
 Trovato!

 set djgpp=c:\djggp\djgpp.env
               ^^^^^
Qui hai messo una 'g' di troppo e una 'p' di meno ;-)
-- 
 Ciao, Bianco.
 Reply to luca.bianco (at) 
tiscalinet.it

Newsgroup: it.comp.lang.c
Titolo: Bit Wise

Salve...
potreste spiegarmi cosa si intende quando si parla di "bit più o meno 
significativi" ?
grazie a tutti
ciao ciao

 significativi" ?
Se hai un numero binario, ad esempio
	101011
il bit piu' significativo e' il primo (da sinistra), mentre quello meno
significativo e' l'ultimo, ovvero quello corrispondente alla piu' picola
potenza di due in gioco.
ciao,
	Marcello
------------------------------------
take a look at 
http://www.physics.it
------------------------------------

Ti ringrazio!!
Newsgroup: it.comp.lang.c
Titolo: AIUTO!!

Sto cercando della documentazione o librerie per utilizzare il modem sotto
DOS.
Aiutatemi vi prego !!!!!!!!!!

 DOS.
dovresti provare con le chiamate BIOS (int 14h penso) vedi la lista di 
Ralph Brown. esistono anche TSR che sostituiscono il BIOS e lo migliorano,
probabilmente se quardi in un mirror simtel nella sezione dos troverai 
qualcosa (es: 
ftp://ftp.flashnet.it/pub/simtelnet/msdos
 o simile). 
---
Ranger, email 
ran...@queen.it
http://members.tripod.com/%7Eranger_rg/
Newsgroup: it.comp.lang.c
Titolo: getchar e putchar... qualcuno mi spieghi

salve a tutti...
perchè questo funziona bene
---------------------------
char ch;
main()
{
 while ((ch=getchar())!='q')
 {
  printf("putchar: ch= ");
   }
}
---------------------------------------
e questo no? cioè quest'ultimo non capisco perchè ripete while una seconda
volta a vuoto...
-----------------------
char ch;
main()
{
 while ((ch=getchar())!='q')
 {
  printf("ch= %c\n",ch);
  }
}
----------------

 ripete while una seconda volta a vuoto...
Non riesco a vedere la differenza, vedo che hanno lo stesso funzionamento.
Forse tu premi invio dopo ogni carattere.
Quello che ti sembra una ripetizione a vuoto è, in realtà, il tasto invio
che è stato intercettato.
Maurizio.

Maschio wrote:

Ma ch non dovrebbe essere dicharata come int ?
Vegeta
--------------------------------------
Guadagnare con internet ?
http://www.refercentral.com/vegeta83ss
---------------------------------------

Ma ch non dovrebbe essere dicharata come int ?
Si, ma non e' questo il problema per cui non si comporta come
vorrebbe.
Hai mai provato a digitare delle stringhe anziche' dei singoli
caratteri?
La putchar() e la printf() si comportano in modo diverso (in generale
la putchar elimina la newline finale), pero' entrambe non si
comportano come ti aspetteresti in presenza di sequenze di caratteri
(almeno, spero che tu volessi leggere solo un carattere per ogni volta
che l'utente batte invio, se no facevi prima a usare una fgets).
Avviene tutto cio' perche' tu dopo la getchar() non svuoti il buffer
della tastiera e quindi al ciclo successivo si trova gia' dei
caratteri dentro e non deve aspettare che l'utente prema qualcosa.
Per svuotare il buffer consiglio (all'interno di ogni ciclo):
    while (getchar() != '\n');
Mox :)

Scusate... avevo scritto male il messaggio precedente...
il problema è questo
in questo modo funziona bene, cioè ad ogni ciclo si ferma per leggere un
caratte:
-------------------
char ch;
void main()
{
 printf ("inserisci 'q' per uscire\n");
 while ((ch=getchar())!='q')
 {
   putchar(ch);
 }
}
------------------------------
se invece di putchar uso printf come di seguito mi fà un giro a vuoto...
perchè?
è come se mi leggesse uno spazio nel secondo ciclo
-------------------
char ch;
void main()
{
 printf ("inserisci 'q' per uscire\n");
 while ((ch=getchar())!='q')
 {
  printf("ch= %c\n",ch);
  }
}
---------------
grazie

 perchè?
Beh, come prima, anziche' fare putchar (ch), fa printf("ch=%c\n", ch);
Cioe' scrive ch= 'il ch letto' e poi va accapo. Ma l'ultimo carattere letto
dal getchar e' l'invio, quindi scrive ch= 'accapo' e poi va nuovamente
accapo. Dunque, anche questo funziona come dovrebbe.
Se volessi fare un programma che termina proprio quando immetti q, credo
(CREDO) che sia necessario usare qualcosa come getche() definita in
conio.h...
Ciao,
Zeppe
Newsgroup: it.comp.lang.c
Titolo: dns server

E' possibile realizzare una funzione in c che interroghi un provider
internet al fine di conoscere
l'ip dinamico di un utente a lui connesso in quel momento di cui noi
conosciamo il suo loghin ?
mi spiego meglio
il mio login con il provider libero č uguale alla mia posta elettronica=
b_m...@libero.it
E' possibile realizzare una funzione in c di questo tipo?
char * cerca (char *login)
{
/*preleva il login, interroga il dns server trova l'ip dinamico perche' in
quel momento l'utente č
connesso e me lo torna sotto forma di stringa "151.25.72.34"*/
}



credo sia OT ... ma in ogni caso sarebbe una violazione alla privacy
degli utenti! e cmq una cosa del genere scende nel termine di
violazione dei sistemi per avere queste info
Antonio

 E' possibile realizzare una funzione in c di questo tipo?
No.
In ogni caso, la tua questione non e' strettamente
pertinente al C.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 un provider internet al fine di conoscere l'ip dinamico
Non c'è bisogno di interrogare il provider. È sufficiente leggere la
variabile d'ambiente REMOTE_ADDR oppure REMOTE_HOST.
Maurizio.

 Antonio
scusate non credevo fosse OT
Newsgroup: it.comp.lang.c
Titolo: Programmare in linguaggio C

Salve,
sono nuovo del ng e sarei interessato alla programmazione in linguaggio C di 
cui sono del tutto ignorante. A parte i testi per l'apprendimento teorico, 
mi chiedo se occorra qualche software specifico e quale per poter 
programmare con tale linguaggio.
Grazie 



Ti serve un pacchetto con compilatore, linker e librerie ed infine un 
editor per scrivere/modificare i sorgenti.
Ci sono parecchi pacchetti per ogni sistema operativo e una ricerca in 
rete potrà fornire una lunga lista in cui ne troverai anche molti 
gratuiti.
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   < 
http://giovanni.homelinux.net/
 >

 gratuiti.
Ti ringrazio per la risposta ma scusa, Giovanni, non saprei cosa digitare in 
google per avviare la ricerca sul web 

 google per avviare la ricerca sul web 
compilatori c
è la prima cosa che mi viene in mente.
http://www.google.it/#q=compilatori+c


 
io aggiungerei alla lista di tool un "buon" debugger, e' molto utile 
poter seguire l'esecuzione del codice, ti permettera' di scovare molti 
errori e anche di capire certe logiche di funzionamento non banali
prova code::blocks 
http://www.codeblocks.org/
 e non ti preoccupare se 
trovi scritto che e' un ambiente per C++


Se usi windows puoi provare ad installare Mingw che contiene
compilatore, linker, librerie, ecc...
Io come ambiente di sviluppo uso Eclipse, mi pare fatto molto bene,
anche se è nativo per Java
il tool per la programmazione in C/C++ è davvero ottimo.

Saro ha scritto:

Ti conviene partire da un ambiente che fornisce giï¿œ ide, compilatore,
linker, etc... tutto in uno poi quando sei un pï¿œ pratico riesci
tranquillamente a passare da un ambiente ad un altro o direttamente a
linea di comando e makefile.
Se sei sotto windows:
Dev-C++ 
http://www.bloodshed.net/devcpp.html
Code::Blocks 
http://www.codeblocks.org/
Se sei sotto mac basta che installi l'xcode e sei apposto.
Se sei sotto linux probabilmente hai giï¿œ installato un compilatore,
quindi puoi usare mille mila ide, editor tra tutti code::blocks che ï¿œ
multi piattaforma, sia kdevelop (se simpatizzi kde) che anjuta (se
simpatizzi gnome) e davvero altri mille.
Come libri ho letto tempo fa un ottimo libro compatto dal titolo C
Pocket, io l'ho usato per rinfrescarmi la memoria dopo anni di java e
l'ho trovato veramente fatto bene ma non so se puï¿œ aiutare un
principiante assoluto, cmq il link ï¿œ:
http://www.apogeonline.com/libri/88-503-2666-1/scheda
micheg

 compilatore, linker, librerie, ecc...
Ti ringrazio e ringrazio pure Giovanni, mmm e Michelangelo. Siete stati 
molto gentili. Una domanda, Mingw � free?
Ciao

 
Ci sarebbe molto da discutere sul senso di free.
Comunque: si! ï¿œ free sia in senso di gratuito che di libero.
micheg
Newsgroup: it.comp.lang.c
Titolo: Levare le interlinee vuote in un file

Salve a tutti!!!
Il mio problema è quello di riscrivere un file togliendo eventuali righe
vuote nel sul interno..
Per far questo ho suddiviso il prog. in procedure.
Dopo aver dichiarato un array dinamico,  una volta arrivato nel punto in cui
mi interessa levare le righe vuote (non devo levare le righe vuota
all'interno di tutto il file, ma solo ogni volta che si verifica una
condizione..nel mio caso ogni volta che trova un tipo di carattere)
all'interno del file, parte la procedura che passa riga per riga all'array
dinamico con :
FILE *in, *out;
char *str;
str = malloc(BUFFER);
.
.
fgets(str, BUFFER, in)
ora per riscrivere la str nel file out, devo verificare che str non sia
vuota o che non contenga solo i caratteri '\n' o '\r' o '0\'.
Come faccio a verificare che str non sia vuoto????
Grazie per l'attenzione...

Siro,

  Dipende da cosa intendi per "riga vuota": fgets() garantisce che, se
non si e` incontrata la fine del file e se /BUFFER/ e` abbastanza grande
da contenere una linea di testo, il vettore /str/ contiene almeno il
terminatore di linea e il terminatore di stringa. Un metodo per
verificare che la stringa non contenga altro che questi caratteri
potrebbe prevedere l'utilizzo della funzione strchr().
	Alla prossima,
		Marco

 wrote in message 8kctha$e01
| FILE *in, *out;
| char *str;
| str = malloc(BUFFER);
| .
| .
| fgets(str, BUFFER, in)
|
| ora per riscrivere la str nel file out, devo verificare che str non sia
| vuota o che non contenga solo i caratteri '\n' o '\r' o '0\'.
| Come faccio a verificare che str non sia vuoto????
| Grazie per l'attenzione...
int len;
[...]
fgets(str, BUFFER, in)
len = strlen(str);
if (len > 0) {     /* se la stringa letta non e' vuota */
    char* aux = str;
    while( *aux != ' ') ++aux; /* se vuoi togliere anche gli spazi vuoti */
    if ((*aux != '\n') && (aux* != '\r')) /* se non e' una riga vuota */
        fputs(str, out);
}
Newsgroup: it.comp.lang.c
Titolo: Leggere e scrivere su file

Salve,
dopo il threa sulla memoria rieccomi con un altro quesito,
leggere e scrivere su file in modo sequenziale, ok, come da libro tutto
funziona.
Ora vorrei trovare il modo di poter cambiare al 'volo' alcune stringhe che
si trovano all'interno di vari file di configurazione, per esempio quello
di Apache, piuttosto che quello di Sendmail, o quello del famoso Win.ini.
In poche parole vorrei leggere il file e scriverci qualcosa al posto di
qualcos'altro.
Es:
-----leggo il seguente file------
Nome = "pippo"
Cognome = "pluto"
---------------------------------
da sostituire con 
Nome = "pippo"
Cognome = "superpippo"
---------------------------------
Avete qualche idea o esempio da studiare? devo costruirmi dei parser tenendo
conto che i file non sono MAI tutti uguali? oppure ogni file bisogna
trattarlo in maniera diversa?
Grazie a tutti.

 qualcos'altro.
Partendo dal presupposto che il file è una struttura sequenziale e
quindi la modifica di una sua parte comporta una riscrittura completa,
per cercare una particolare sequenza di caratteri in un file esistono
molti algoritmi (di cui alcuni molto veloci come il KMP[1] o il
BMH[2]).  La cosa più semplice da fare è leggere la sequenza di linee
contenute nel file di testo una alla volta.  Se riconosci nella
stringa letta una sequenza da cambiare, la sostituisci e scrivi in
output la nuova stringa.  Se non ci sono cambiamenti sputi fuori la
stringa di partenza.
[1] Knuth-Morris-Prath
[2] Boyer-Moore-Horspool

 trattarlo in maniera diversa?
In generale hai bisogno di 2 files, uno e' il file originale che
leggi,
e uno e' quello temporaneo modificato nel quale scrivi.
dopo di che, magari con una chiamata al tuo sistema, puoi rinominare
quello vecchio in qualcosa tipo nome.BAK e il file temporaneo
nel nome del file originale.
(mi sembra che stai facendo delle prove, quindi non mi
preoccuperei troppo della portabilita'.)
A parte casi particolari non puoi fare quello che desideri
modificando direttamente il file di partenza.
Per quel che riguarda scrivere un parser mi sembra
che per quello che vuoi fare basterebbe
leggere il file originale riga per riga, modificarla
se occorre (per cercare una stringa in un'altra
puoi usare strstr() ) e poi scriverla nel file temporaneo.
Quello che devi mettere a fuoco quando scrivi il
programma (ed e' una cosa che dipende dall'uso che
nei fai e quindi implicitamente dal file che gli passerai)
e', per esempio, se vuoi cambiare una sola occorrenza per
riga, etc.
ciao,
g.
Newsgroup: it.comp.lang.c
Titolo: Problema con array

Ciao, vorrei capire perchè questo pezzo di codice non funziona:
#include <stdio.h>
int array[10];
int main()
{     /* consente all'utente di immettere fino a 10 elementi nell'array
         ed esce quando sono stati messi tutti e 10 o quando l'utente
inserisce 99
         poi stampa a video il contenuto dell'array*/
      int indice=0,
          valore=0;
      int conta=0;
      while( indice<10)
      {
             while(valore!=99)
             {
                   puts("Inserire un numero, 99 per uscire ");
                   scanf("%d", &valore);
                   array[indice]=valore;
             }
      indice++;
      conta++;
      }
      printf("Ecco i valori inseriti nell'array: ");
      for (conta=0; conta<=indice; conta++)
           printf("%d\n", conta, array[indice]);
           system("PAUSE");
           return 0;
}
Vorrei visualizzare il contenuto dell'array a schermo ma mi mette o tutti
zero o tutti 99 a seconda di cosa ci metto nel secondo parametro di printf.

 }
Provalo così:
#include <stdio.h>
int array[10];
int main()
{     /*  immetti max 10 valori, al 99 esce*/
      int indice=0,
          valore=0;
      int conta=0;
             while(valore!=99 && indice<10)
             {
                   puts("Inserire un numero, 99 per uscire ");
                   scanf("%d", &valore);
                   array[indice]=valore;
                   indice++;
    }
      puts("Ecco i valori inseriti nell'array: ");
      for (conta=0; conta<=indice; conta++)
           printf("Indice %d\t= %d\n", conta, array[conta]);
      return 0;
}
Ciao

 }
Provalo così:
#include <stdio.h>
int array[10];
int main()
{     /*  immetti max 10 valori, al 99 esce*/
      int indice=0,
          valore=0;
      int conta=0;
             while(valore!=99 && indice<10)
             {
                   puts("Inserire un numero, 99 per uscire ");
                   scanf("%d", &valore);
                   array[indice]=valore;
                   indice++;
    }
      puts("Ecco i valori inseriti nell'array: ");
      for (conta=0; conta<=indice; conta++)
           printf("Indice %d\t= %d\n", conta, array[conta]);
      return 0;
}
Ciao
--
Linux registered user  #249109
Linux registered machine #133922
PGP key Fingerprint = CB BB FC B2 43 69 2E 9C  27 9F C5 40 C3 F3 18 1A

scusate...avevo errato account...  :)

 ha scritto nel messaggio
news:F_jR7.282353$sq5.13...@news.infostrada.it...

for(conta=0; conta<indice;conta++)
printf("%d %d \n" ,conta,array[indice]);
conviene invertire l'ordine dei due cicli while.

            printf("%d\n", conta, array[indice]);
A parte che nella stringa passata hai un solo specificatore di formato, ma
due variabili, comunque su indice non fai nessun incremento, quindi
stamperesti sempre lo stesso valore; inoltre il for non va bene: prova con
questo:
      for (conta=0; conta<indice; conta++)
           printf("%d %d\n", conta, array[conta]);
Ciao,
Cecco
Newsgroup: it.comp.lang.c
Titolo: scanf successivi...

Salve a tutti
spiego in breve
ho un programma che esegue due scanf successivi sulla stessa variabile
ora non riesco a capire perchè se la varibile lette è intera tutto
funziona mentre se la variabile e un carattere mi skippa completamente
l'istruzione. per quale motivo? è un problema di svuotamenteo di buffer?
ho provato anche con fflush e flushall ma non cambia nulla. ho cercato
faq e domande varie ma non sono riuscito a trovare niente. qualcuno mi
sa aiutare?
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 sa aiutare?
ho notato che però viene saltata solo la scanf successiva ossia se metto
tre scanf della stessa varibile char uno di seguito all'altro viene
eseguito il primo la seconda volta la variabile viene riempita
con '\n' e il terzo scanf viene eseguita


 sa aiutare?
per svuotare il buffer, dopo ogni scanf metti
while( (getchar()!='\n')) ;
STRAfaq ;-))
ciao ..
-- 
#include <stdio.h>
int main(void){char c[]={10,65,110,116,111,110,105,111,32,98,97,114,98,111,110,
101,32,60,104,105,110,100,101,109,105,116,64,116,105,115,99,97,108,105,110,101,
116,46,105,116,62,10,10,0};printf("%s",c);return 0;}

 ciao ..
Hai proprio ragione e l'ho letta 22 volte, mi mancava il ; per breakkare
il ciclo
uff rivoglio iostream e cin!!!!

Newsgroup: it.comp.lang.c
Titolo: Grafica

Salve, sapete per caso come posso ingrandire la finestra DOS a tutto schermo
e come si geste la grafica nella finestra DOS? Per esempio, come posso
creare rettangoli se si puň.
Grazie, Ramses.

 Grazie, Ramses.
Per quanto riguarda il prompt di DOS a tutto schermo, devi vedere le
configurazioni del S.O.
Per accedere al video da DOS, dipende dalla modalità che usi.
Se sei in modalità testo, l'indirizzo della memoria video dovrebbe essere
0x8 e qualche cosa, mentre per la modalità grafica 320x200 256 colori è
0xA000, gli indirizzi forse non sono precisissimi è molto che non ci gioco
più (sigh!!!).
Tieni presente che in modalità video servono 2 byte per visualizzare un
carattere, perché il primo contiene il carattere, l'altro è diviso in 2 bit
per colore (RGB) e 2 bit per altre funzioni, il più significativo fa
lampeggiare il carattere.
Nella modalità grafica 320x200, ricordati di sincronizzarti con il refresh
del video, altrimenti potresti vedere curiosi sfarfallii, in più questo darà
una certa sincronizzazione alle animazioni, evitando che a volte vadano più
piano e a volte più veloci.
Altra cosa è il doubble buffering. Tipicamente la memoria video è molto più
lenta da accedere rispetto a quella convenzionale (oggi con i nuovi sistemi
non so dirti), comunque, tipicamente le immagini prima di essere sparate a
video, vengono costruite su un buffer di supporto e poi scaricate a video.
Per tutte queste nozioni ti consiglio di chiedere a quelli di
it.comp.giochi.sviluppo, dove puoi reperire informazioni per studiare la
scheda video e i trucchi per gestirla.
Per ora posso consigliarti un documento molto utile, si chiama HelpPc, lo
trovi sulla rete.
E' un'eseguibile che permette di navigare alcuni file testo. Contiene una
miriade di informazioni sull'HW in generale.
Ciao e buon studio.



beh, considera che la *FINESTRA* é una macchina virtuale 86, quindi
le soluzioni sono o scrivere direttamente nella video-ram (dall'offset
0A0000 all'offset 0BFFFF) oppure utilizzare il bios
cod

 Ciao e buon studio.
Grazie tantissimo per il tuo tempo.
Ramses

Ti consiglio dei buoni libri sulla VGA, dovresti trovare qualcosa anche su
Internet, anzi di sicuro la trovi.
L'HelpPc descrive un po' tutto l'HW del PC , dalla seriale alla CPU, dallo
switch più insignificante del Floppy alla S-Video.
Trovi anche come riuscire a programmare la tastiera in modo da utilizzare
più tasti contemporaneamente, come nei videogiochi.
Ti consiglio anche un po' di assembly per le funzioni che devono scaricare
velocemente dati a video, anche se al giorno d'oggi per piccole cose non
serve più di tanto, ma almeno prendi confidenza.
Soprattutto per la matematica, si possono fare delle belle ottimizzazioni.
Vedere quello che esce fuori da una funzione matematica è molto bello, pensa
ai programmi di grafica 3d, 2d  o agli stessi videogiochi.
P.S. i due indirizzi che ti ho dato (0x8? e 0xA000) sono dpecifici della
memoria video nelle modalità Testo e Grafica.
Newsgroup: it.comp.lang.c
Titolo: Lista nomi file

Salve a tutti, devo fare un piccolo programma
in C che salvato in una cartella lanciadolo mi
legga tutti i nomi dei file all'interno della cartella stessa,
salvi questi nomi in un array a 2 dimensioni e visualizzi
un menů di scelta sullo schermo con i nomi dei file , tutti txt.
Il numero di file varia di volta in volta . Mi date qualche spunto ?
Grazie a tutti
Ciao

man opendir ??
l'interfaccia dirent potrebbe esserti utile ...
bj

Ma le due dimensioni dell'array a ke te servono se vuoi solo i nomi???
scusa la curiosita' ...
bj

 legga tutti i nomi dei file
Il C standard non dispone di funzioni per ricavare l'elenco dei file
contenuti in una directory. Nei vari ambienti potrai contare su funzioni
apposite: opendir/readdir in ambiente POSIX, FindFirstFile/FindNextFile in
ambiente Win32.
Max

 Max
... in Win32 devo usare le api di win? ma con che
compilatore? in C si può?
Ciao

[...]
... si, mi sono poi accorto che non e necessario,
ma come creo un array che di volta in volta cambia
con sizeoff?
Ciao

 compilatore? in C si può?
Le API Win32 hanno un'interfaccia in C, quindi puoi usarle nativamente 
sia in C sia in C++.
Ciao

 Ciao
... mi dici come si fà?
devo agganciare qualche libreria
quando compilo? le parole chiave dove sono? :-)
Ciao

 quando compilo? le parole chiave dove sono? :-)
Se usi il compilatore Microsoft Visual C++ (di Microsoft Visual Studio), 
devi semplicemente scegliere come tipo di progetto da generare 
un'applicazione Windows, e lui si preoccupa di configurare il linker per 
linkare le librerie necessarie.
Nel tuo codice sorgente ti basta #include <windows.h> per usare le API 
Win32.
Se usi altri compilatori non so, devi chiedere ad altri o consultare la 
loro documentazione

[...]
... ti ringrazio.
Ciao

Newsgroup: it.comp.lang.c
Titolo: le librerie api?

ciao. vorrei scrivere dei programmi il linguaggio C, utilizzando le
librerie api, potete darmi una fonte molto completa in italiano. grazie

 librerie api, potete darmi una fonte molto completa in italiano. grazie
Io inizierei con l'informarmi su cosa sia una API:
http://it.wikipedia.org/wiki/Application_programming_interface
Ciao!

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

 wrote:
[ snip ]
Indentazione scadente ;)
----------------------------------
AC>int cdr (struct elemento **l)
AC> {struct elemento *a;
AC> if (null(*l)) return 0;
AC> else {a=*l;
AC> *l=a->next;
AC> free (a);
AC> return 1;
AC> }
----------------------------------
Altrimenti ti saresti accorto subito che qui manca una '}'.
Ciao ciao,
Andrea
-- 
"...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and 
 the Ugly)."
(by Matt Welsh)

  switch(opzione)
e se per sbaglio premo la freccetta ? ;)
devi scrivere :
opzione = getch() ;
switch ( opzione ) 
{
       case ... : ... ; break ;
       case ... : ... ; break ;
       case ... : ... ; break ;
       ...
       case 0   : getch() ; break ;
}
--
Andrea Laforgia        (
andrea_...@bigfoot.com
)

  a=(struct elemento *) malloc(sizeof(struct elemento));


 wrote in message
81s8o3$b9f$2...@aquila.tiscalinet.it...

conio.h non é standard