mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c
Titolo: Lavorare con Shift,Bit,Maschera And or etc.

Salve sto cercando in italiano
se possibile
Delle buone risorse che "parlino" di questi argomenti
una delle mie carenze vorrei un pò di luce su tecniche
specifiche di programmazione che riguardano questi
elementi
grazie
ciao

yappo ha scritto:

..sinceramente non ne ho idea... pero' impari molto se fai un po' di 
pratica con l'assembly (soprattutto leggendo tanto codice gia' scritto).
Scusa l'ovvieta', ma e' cosi'...
Ciao
-- 
Cybertoldo
Per rispondermi via email, sostituisci moc.liamg con 
gmail.com

yappo ha scritto:

Puoi trovare qualcosa in questo volumetto sull'assembly:
http://www.drpaulcarter.com/pcasm/
e in questo "ricettario":
http://graphics.stanford.edu/~seander/bithacks.html
sicuramente poi ci saranno altre risorse, prova a cercare in 
rete "bit twiddling" e/o "bit fiddling".
Ciao.

yappo ha scritto:

Questo link è auto esplicativo.
http://www.cplusplus.com/doc/boolean.html
I bit voglio ben sperare tu sappia cosa siano :)
Fatto questo inventati una variabile, la imposti a 1 e poi vai di shift
e vedi cosa succede.
Se conosci i bit e le potenze di due, vedrai cose incredibili :)

 
http://graphics.stanford.edu/~seander/bithacks.html
...carino questo link.
Mi ha fatto anche ricordare un classico vecchio quiz che girava tra 
studenti o colleghi di lavoro: :)
Swapping values with XOR
#define SWAP(a, b) (((a) ^= (b)), ((b) ^= (a)), ((a) ^= (b)))
This is an old trick to exchange the values of the variables a and b 
without using extra space for a temporary variable.



Ottimo grazie a tutti, il fatto e che se me le studio le cose le
capisco ma poi non usandole mi dimentico un sacco di cose...
Quindi volevo farmi una mini dispensina di tutti i tricks... 

 una mini dispensina di tutti i tricks...
Anche il libro "Hackers delight" e' un'ottima sorgente di ottimizzazioni
drastiche, ma sono descritte con uno pseudo-linguaggio, non in C.
Date un'occhiata alle "basi" (online):
http://www.hackersdelight.org/basics.pdf
-- 
Legrandin


bello anche questo!
Ho deciso. Da domani iniziero' a scrivere i programmi cosi': :-)
int i, a = 10, b = 20;
for(i=(i|i)-(i&i); (i^(a-~b-1)); i=-~i)
      printf("i = %d\n", i);
Ciao


      printf("i = %d\n", i);
Sono d'accordo, ma preferisco qualcosa di più compatto... :-)
int i, a = 10, b = 20;
for(i=(i|i)-(i&i);(i^(a-~b-1));printf("i=-~i = 
%d\n"+((i+2+~i)<<2),i),i=-~i);
-- 
Costantino Grana 


...prepariamoci per il prossimo contest: 
http://www.ioccc.org/
:-)


 :-)
Perfetto così nessuno intenderà il vostro codice e quando farete
grossi progetti non sarete in grado di riprenderli :)

Salvatore Di Fazio ha scritto:

non e' mica sempre un danno: immaginaci come programmatori microsoft ... :->


 immaginaci come programmatori microsoft ... :->
non c'è bisogno d'andare in microsoft per trovare certi programmatori
;)
Newsgroup: it.comp.lang.c
Titolo: [Cross]Esperto Ncurses

Ho un disperato rpobvelam con i curses e non so + cosa fare!!
Non mi viene fuori nulla:prima inizializzo la liberia e poi se uso printw 
e tutte le altre funzioni nonb succede nulla!!!
Qulacuno ha un'esempio che funziona???
     GRAZIE
     <<SAX>>
Per conttarmi togliere TOGLIMI dall'indirizzo email in firma
 
mail:linefin...@tiscalinet.it

 Qulacuno ha un'esempio che funziona???
#include <curses.h>
#include <stdio.h>
int main(void){
 initscr(); cbreak(); echo();
 printw("Ciao Mondo"); refresh();
 getch();
 endwin();
 return 0;
}
Lapo
Newsgroup: it.comp.lang.c
Titolo: Problema socket

E' da poco che ho iniziato a programmare coi socket, quindi non ne so
molto. Ho voluto provare a fare una specie di client di posta. Insomma un
programma che manda tramite smtp una email (a me naturalmente).
Il problema è che spesso la funzione recv non aspetta la risposta del
server e passa all'istruzione successiva, quando il server non è ancora
pronto a riceverla. Per fare un esempio, quando io mando la stringa "data"
il server mi sta dando ancora la conferma del comando "rcpt to:".
Il codice è questo (sotto Linux):
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <netdb.h>
#include <string.h>
#include <stdio.h>
#define ricezione 0
main()
{
    int socketmio,n;
    struct sockaddr_in indirizzo;
    struct hostent *hp;
    char lettura[100];
    char *stringa1="helo 
i...@kataweb.com
\n";
    char *stringa2="mail from: 
i...@katamail.com
\n";
    char *stringa3="rcpt to: 
gturr...@katamail.com
\n";
    char *stringa4="data\n";
    char *stringa5="Mail from: programma socket\n Subject: 
mail dal programma socket\n Hello World \n.\n";
    char *stringa6="quit\n";
    socketmio=socket(PF_INET,SOCK_STREAM,0);
    indirizzo.sin_family=AF_INET;
    indirizzo.sin_port=htons(25);
    hp=gethostbyname("
smtp.katamail.com
");
    indirizzo.sin_addr.s_addr=((struct in_addr *)(hp->h_addr))->s_addr;
    if(connect(socketmio, (struct sockaddr *)&indirizzo,
sizeof(indirizzo))==0) 
printf("\nConnesso\n"); else printf("\nNon Riuscito\n");
    n=recv(socketmio, lettura, strlen(lettura), ricezione);
    lettura[n]='\000';
    printf("\n1: %s",lettura);
    printf("\n1: %s",stringa1);
    send(socketmio, stringa1, strlen(stringa1), 0);
    n=recv(socketmio, lettura, strlen(lettura), ricezione);
    lettura[n]='\000';
    printf("\n2:%s",lettura);
    printf("\n2:%s",stringa2);
    send(socketmio, stringa2, strlen(stringa2), 0);
    n=recv(socketmio, lettura, strlen(lettura), ricezione);
    lettura[n]='\000';
    printf("\n3: %s",lettura);
    printf("\n3: %s",stringa3);
    send(socketmio, stringa3, strlen(stringa3), 0);
    n=recv(socketmio, lettura, strlen(lettura), ricezione);
    lettura[n]='\000';
    printf("\n4: %s",lettura);
    printf("\n4: %s",stringa4);
    send(socketmio, stringa4, strlen(stringa4), 0);
    n=recv(socketmio, lettura, strlen(lettura), ricezione);
    lettura[n]='\000';
    printf("\n5: %s",lettura);
    printf("\n5: %s",stringa5);
    send(socketmio, stringa5, strlen(stringa5), 0);
    n=recv(socketmio, lettura, strlen(lettura), ricezione);
    lettura[n]='\000';
    printf("\n6: %s",lettura);
    printf("\n6: %s",stringa6);
    send(socketmio, stringa6, strlen(stringa6), 0);
    shutdown(socketmio,2);
    close(socketmio);
    printf("Disconnesso\n");
}

 }
Prova a correggere questi errori e vedi cosa viene fuori.
Luca
-- 
Home: 
http://kronoz.cjb.net
Se non sei parte della soluzione, allora sei parte del problema.
Newsgroup: it.comp.lang.c
Titolo: Ordinamento e puntatori

Ciao a tutti, ho ancora dei problemi con i puntatori e non riesco a
risolvere :(
Allora: il programma qui sotto utilizza un array di 10 elementi e un array
di puntatori.
Faccio puntare ogni puntatore dell'array ad un elemento dell'array a.
Dopo vorrei ordinare i puntatori, in modo che il primo elemento di b[] punti
all'elemento più piccolo di a ed eseguire quindi un ordinamento crescente.
La prima parte l'ho provata da sola e funziona.
La seconda parte dell'esercizio mi da il solito problema: handle_exceptions:
Exception: STATUS_ACCESS_VIOLATION
Perchè?
Oltretutto mi sono accorto che nella prima printf mi stampa gli elementi
fino al penultimo elemento (34), cosa che non succede se elimino il codice
per l'ordinamento.
Help :(
/* Si vuole che ogni elemento di B punti ad un elemento di A e
successivamente */
/* si vuole fare in modo che gli elementi di B puntino ad A in ordine
crescente */
#include <stdio.h>
int main(void) {
double a[10] = {1,4,15,12,5,9,21,27,34,10};
double *b[10], *supp;
int i,j;
for(i=0; i<10; i++)   //faccio puntare ogni elemento di B ad un elemento di
A
 {
 b[i]=&a[i];
 printf("\n%.0f",*(b[i]));
  }    // il programma funziona fino a qui
for(i=0; i<9; i++)   //---- QUESTA E' LA PARTE CHE GENERA ERRORI---
 {
  for(j=i+1; i<10; j++)  //confronto l'elemento i con tutti i successivi
elementi puntati
   {
   if(*(b[i]) > *(b[j])) // se l'elemento i è maggiore del successivo..
   {
   supp = b[i]; //..swappo gli indirizzi puntati
   b[j] = b[i];
   b[j] = supp;
   }
   }
 }         //---- FINE  PARTE CON PROBLEMI ---------------
for (i=0; i<10; i++)
 printf(" %0.f",*(b[i]));
}

    b[j] = supp;
Questo non swappa un bel niente =P ! In pratica, assegni 2 volte b[i] a
b[j]... la mamma mi ha insegnato che così si swappa =P:
supp = b[j]; //..swappo gli indirizzi puntati
b[j] = b[i];
b[i] = supp;
"Tipica struttura a chiasmo !" direbbe la mia ex-prof di italiano... =)
Due errorini di distrazione insomma.
'sera lietissima, Marco

 Due errorini di distrazione insomma.
Già.
Grazie per la risposta :)
Deep

 Studiava il C ? :P
No, ma impediva a me di farlo... senza troppo successo, comunque =P
'sera lietissima, Marco

 memorie esterne al suo spazio, o protette.
Mmmmmm porca miseria!!!
Siamo alle solite..
Hai ragione tu, non funziona perchè:
for(i=0; i<9; i++)   {
  for(j=i+1; i<10; j++)   {
                ^^^^
non è i !! ma j !
Uff..ci ho perso ore su sto codice! Che rabbia.... :(
Grazie per gli hint, scambiata i con j, il codice funziona. D'ora in poi
vedrò di utilizzare altri nomi per le variabili :)
Deep
Newsgroup: it.comp.lang.c
Titolo: Interfacciarsi col filesystem e altro...

Salve ragazzi,
un po' di tempo che vi leggo con piacere, ora intervengo con una domanda.
Su un sistema GNU/Linux, filesystem ext3, sapete quali librerie/funzioni
devo includere/utilizzare per poter accedere alla lista dei files nelle
varie directory e poterle manipolare?
Tanto per chiarezza, per esempio, vorrei poter creare un programma che
vada a leggersi i nomi dei files contenuti in certe directory e poi li
manipoli(i nomi) o riorganizzi(i files) secondo qualche regola da me
stabilita.
In alternativa(e/o in aggiunta :-) ), come si richiamano i comandi della
shell(bash) da un programma in C?
Grazie a tutti
-- 
Toyotoshy, Linux User #312588

 shell(bash) da un programma in C?
Per quello puoi usare la funzione system()
ciao
Giacomo

Ciao Giacomo,
grazie dei suggerimenti, partendo dai quali ho trovato un sacco di
materiale interessante.
Ciao e a rileggerti
P.S.
naturalmente se qualcun altro avesse altri suggerimenti sarebbero
sicuramente graditi :-)
-- 
Toyotoshy, Linux user #312588

 sicuramente graditi :-)
Qualcuno potrebbe non trovarli attrettanto graditi, trattandosi di 
questioni che esulano dagli argomenti previsti dal manifesto del NG. 
Suggerisco di spostare la discussione su it.comp.os.linux.development, dove 
le tue domande riceveranno senz'altro maggiore attenzione.
Max

 le tue domande riceveranno senz'altro maggiore attenzione.
1) grazie di avermi suggerito il newsgroup it.comp.os.linux.development,
che non avevo notato;
2) leggero' il manifesto.
A rileggerti


 varie directory e poterle manipolare?
Ciao,
questa e' direttamente la guida delle glibc , e trovi anche un esempio 
di quello che ti serve
http://www.gnu.org/software/libc/manual/html_node/Accessing-Directories.html#Accessing-Directories
Ciao
Aragorn

 questa e' direttamente la guida delle glibc , e trovi anche un esempio 
  ...............taglio................
grazie anche a te

Newsgroup: it.comp.lang.c
Titolo: Alcuni chiarimenti sulle funzioni socket

Ciao a tutti!
Sto seguendo un corso di info dove si trattano anche le funzioni
socket ma l'esercitatore non sembra saperne molto e mette in
confusione assoluta gli utenti...
Problema 1)
Allora per le strutture che contengono i dati del socket
l'esercitatore fa una definizione di 
struct sockaddr_in nomevariabile
pero' poi ogni singola volta che la passa a qualche funzione fa un
cast esplicito a 
(struct sockaddr *)&nomevariabile
Domanda: perche' non usa direttamente sockaddr invece di sockaddr_in?
Risposta sua: perche' e' cosi' :-)
Problema 1bis)
Sempre collegato al problema 1 ci sta il fatto che in sockaddr_in va
sempre a riempire 8bytes con degli 0 (funzione bzero)...
Domanda: perche'?
Risposta sua: */ Volete proprio saperla? :-) */
Per ora mi fermo qui, le prossime puntate avro' sicuramente altri
probs... (oggi ha fatto il fork e ovviamente nessuno ha capito nulla
:-))
GRazie!

Risposta 1)
Probabilmente fa cosě perche č piu' semplice da gestire la struttura
sockaddr_in (tutti i icampi della struttura sono ben separati) MA le
funzioni che lui usa richiedono come parametro la famosa sockaddr.
Risposta 1bis)
il campo sin_zero serve solo a far coincidere in dimensione la struttura
sockaddr_in con la sockaddr (in pratica gli mancava 1 byte).
Steo

funzioni che lui usa richiedono come parametro la famosa sockaddr.
intendi dire che sono due strutture (non definisce sockaddr_in quindi
immagino sia in socket.h o types.h) che contengono entrambe i dati
necessari per un collegamento socket in posizioni differenti? E il
cast fa da solo la conversione?
grazie

Collegati al sito 
www.cdc.unict.it
  e ricerca la dispensa di Telematica.....
c'è quanto ti serve se cerchi attentamente
Newsgroup: it.comp.lang.c
Titolo: Linux e librerie

Salve a tutti,
sono da poco un utente Linux e volevo programmare in C++, ma ho un problema
con le librerie.
Dato che non ho un editor con compilatore integrato (come il Turbo C++ del
dos ad esempio) sono un po incasinato con le librerie. Cioe' utilizzando il
Gcc (o il g++) per compilare non riesco a fargli vedere alcune librerie
(svgalib e libturboc) che ho installato (bene, spero!) prelevandole dal web.
Poi c'e' il casino con le librerie statiche e dinamiche...
C'e' qualcosa (info, tutor, file di testo, ecc...)  in rete che posso
scaricare per capire come gestire al meglio le librerie con Linux?
Grazie a tutti

 scaricare per capire come gestire al meglio le librerie con Linux?
prova con i prametri -L <path-librerie> -I <path-include>
per maggiori dettagli vedi il man del gcc se cosi vale per il g++
non lo so in tal caso prova a postare su it.comp.lang.c++
Ciao Max
-- 
+-----------------------------------------------------------+
| Secondo alcuni autorevoli testi di tecnica Aeronautica,   |
| il calabrone non può volare, a causa della forma e del    |
| peso del proprio corpo in rapporto alla superficie alare. |
| Ma il calabrone non lo sa e perciò continua a volare.     |
|					     Igor Sikorsky  |
+-----------------------------------------------------------+

scaricare per capire come gestire al meglio le librerie con Linux?
Non so se esiste una versione on-line, ma su questo, ed altri
argomenti, ho trovato una trattazione piuttosto chiara e semplice sul
libro "Linux Programming Bibile"
Augusto Pucci

Newsgroup: it.comp.lang.c
Titolo: basso livello

Quando diventano utili le funzioni di basso livello previste da POSIX? 
Es: quando e perche' dovrei preferire read a fread?
-- 
Devaraja (Xdevaraja87^gmail^c0mX)
Linux Registerd User #338167
http://counter.li.org

 
io le trovo comode quando devo usarle insieme a select e poll per 
ciclare le letture

 
Cioe' hai una piccola libreria che fa da interfaccia C alle chiamate di 
sistema e basta?


 
Si, in genere non hai nemmeno un SO, cioe` e` un SO rudimentale 
progettato in casa.  E *tutte* le librerie te le devi scrivere.
Abbastanza tipico in ambienti embedded (come esempio) la gestione della 
seriale per input ed output verso un videoterminale che in un ambiente 
evoluto puoi tranquillamente fare con stdin e stdout.  Molto spesso e` 
piu` facile usare la sprintf() per costruire il buffere ed usarlo per 
scrivere sul device.  E` la stessa cosa che fa la printf() ma non c'e` 
interazione con il SO che deve prepararti automaticamente l'interfaccia.

Newsgroup: it.comp.lang.c
Titolo: controllare il Time

Salve a tutti,
ho un progetto in mente ma credo di essere ancora un po' troppo scarso
per realizzarlo.
mi servirebbe un prog che, una volta settata una certa ora critica
dall'utente, Tut, la confronti ogni 30 sec con l'ora di sistema Tsys. in
pratica una funzione sveglia. se i 2 time coicidono (o Tsys-t0 < Tut <
Tsys+t0, con t0>0 piccolo) allora il progr ne lancia un altro, in
particolare il mio mp3 player, e lo spegne dopo un tot di tempo scelto
dall'utente.
questa operazione si dovrebbe ripetere tutte le mattine lanciando il
progr una volta sola, la prima, fino a quando non viene chiuso
manualmente.
e' inoltre possibile lanciarlo in background? ovvero il prog tiene
d'occhio il time ma io ho ancora accesso al prompt per fare altro? ah,
dimenticavo, su questo pc gira solo un DOS 5.
ho visto che e' possibile usare qualcosa tipo <time.h> e sintassi
relativa, ma non saprei come trasformare il tempo in un numero
conveniente e controllarlo con un loop. e inoltre non so come
controllare il lancio di un file.exe esterno (il player).
avete qualche dritta? qualcosa da leggere per arrivare alla meta?
perdonate l'ingenuita' nel caso avessi scritto fregnacce.....
un grazie per le eventuali risposte,
mirko  
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Dai un'occhiata a system() per eseguire un programma esterno; tuttavia 
non hai nessun modo (standard) per "tenere sotto controllo" il programma 
  una volta lanciato, ricordatelo: se l'utente lo chiude, bene, 
altrimenti cippa.
PS: povero computer... mettigli su qualche altro SO, ti prego :P
-- 
/**
  * Mattia Belletti - Undergraduate student @ 
cs.unibo.it
  * ICQ: 33292311   - email: 
mbel...@cs.unibo.it
  * IRC: BluShine   - site(s): 
http://cs.unibo.it/~mbellett
  * Linux registered user 299762 @ Linux registered machine 213003
  */

il dr-dos per esempio???
io uso ancora il free-dos 7 e funziona benino.
Passero

Newsgroup: it.comp.lang.c
Titolo: se volete potete


Newsgroup: it.comp.lang.c
Titolo: perchè nn va - semplice algoritmo

ciao a tutti..
mi spiegate come mai questo semplice algoritmo nn funziona??
struct linked_list {
    int info;
    struct linked_list *next;
    struct linked_list *list;
    } ;
typedef struct linked_list ELEMENT;
typedef ELEMENT *LINK;
LINK crea_pettine()
{
    LINK head;
    head = malloc(sizeof(ELEMENT));
    head -> next = NULL;
    head -> list = NULL;
}
void inserisci(LINK head, int ele)
{
    LINK temp;
    if (head -> next == NULL)/*l'elemento passato è l'ultimo quadrato*/
    {
         temp = malloc(sizeof(ELEMENT));
         temp -> info = ele;
         head -> next = temp;
         temp -> next = NULL;
    }
    else
    {
         temp = head -> next;
         head -> next = malloc(sizeof(ELEMENT));
         head -> next -> info = ele;
         head -> next -> next = temp;
    }
}
int main()
{
  LINK head;
head = crea_pettine();
inserisci(head, 11);
printf("%d", head -> info);
}
a me stampa a video questo valore: 399800 ed -11663005939 se faccio il 
debug!!! ma che vuol dire? è uscito pazzo il compilatore?? eppure mi 
sembra un algoritmo elementare..mah :'(
grazie per le risposte
-- 
Renato Zero
Provaci a riemergere, da quei sogni che il tuo silenzio ha ucciso...che 
ne sai, dell'origine, delle lacrime, se non ha mai pianto...provaci, a 
scommettere, che al traguardo tu non sarai secondo...agile è 
quest'anima,  non puoi vincerla, non la puoi ingannare più......PROVA A 
PRENDERMI......

 debug!!! ma che vuol dire? è uscito pazzo il compilatore??
No. Se sei alle prime armi e non ottieni il risultato che speri la colpa
è sempre tua. E` praticamente impossibile incontrare un bug del
compilatore per cose cosi` semplici. Piuttosto attiva i warning e dai
retta a quello che il compilatore ti dice.
Luca
-- 
Home: 
http://kronoz.cjb.net
La somma dell'intelligenza sulla terra e` una costante.
La popolazione e` in aumento.

 primo (head) ha valore indefinito.
e come potrei scrivere questo algoritmo in modo divero? io credevo 
andasse bene xkè prima chiamavo la funzione crea_pettine (ora l'ho 
riscritta cm mi hai detto) che allocava memoria per head. infatti se 
dopo la chiamata:
head = crea_pettine();
scrivo:
head -> info = 3;
mi stampa correttamente il valore 3 dopo.
Ma se dopo la chiamata head = crea_pettine(); eseguo la funzione 
inserisci(head, 3) nn va bene! e nn capisco il motivo, visto che cmq 
gli passo head, che è si nn inizializzato, ma che esite, ed lo 
inizzializzo io nella funzione! alla fine il procediemnto nn è lo 
stesso che faccio nel main?
ps. ti ringrazio per la pazienza..ma sn cose che mi servono e vorrei 
capirle bene. grazie


 inizzializzo io nella funzione!
No, non lo inizializzi. Nella inserisci() crei un nuovo elemento e lo
attacchi in coda ad head; il secondo elemento è inizializzato, il primo
no!
Luca
-- 
Home: 
http://kronoz.cjb.net
"Woe to you, Oh Earth and Sea,
 for the Devil sends out the beast with wrath,
 because he knows the time is short...
 Let him who had understanding reckon the number of the beast
 for it is a human number, its number is Six hundred and sixty six."
Revelations ch XIII, b. 18

ora ho capito...ti ringrazio..ciao

Newsgroup: it.comp.lang.c
Titolo: documentazione libreria C Linux

Ciao a tutti. Sto provando a scrivere qualche programma
in C sotto Linux (Mepis) ma non trovo la documentazione delle
funzioni di libreria. Dove si trova? Grazie della cortese attenzione.
Ciao.
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 funzioni di libreria. Dove si trova? Grazie della cortese attenzione.
http://www.gnu.org/manual/manual.html
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG
Newsgroup: it.comp.lang.c
Titolo: DEcompilatore C....esiste?

commenti nel codice!! ^_^)
Oltretutto sotto linux i programmi compilati MANTEGONO la tabella dei
simboli cosa che in disassemblaggio semplifica la vita e dimostra come
win sia limitato.
Ciao
VV

 e dimostra come win sia limitato.
CA%%ATA COLOSSALE! Tu credi che sotto windows non si generino simboli di
Debug? ROTFLASTC! Ti prego dimmi che ho capito male, in tal caso dimmi
in cosa e' limitato "windows" per te.
-- 
-=[]=---iAN CooG---=[]=-

Newsgroup: it.comp.lang.c
Titolo: Scrittura file

Salve a tutti, come mai questo prog non scrive niente sul file numeri.txt?
la sintassi del prog è esatta.
#include<stdio.h>
#include<conio.h>
void main(){
 int a=0;
 FILE *fp;
 printf("Inserisci un numero: ");
 scanf("%d",&a);
 fp=fopen("Numeri.txt","w");
 fwrite(&a,sizeof(int),1,fp);
 printf("\nNUMERO: %d",a);
 fclose(fp);
 getch();
}
grazie

 grazie
Se invece scrive proprio *nulla* allora prova con un altro compilatore
ciao


Maurizio

Porca paletta nei post precedenti ti ho dato delle dritte assolutamente
errate!!!
Allora riprendiamo ora che sono piu' lucido e che il momento di "ordinaria
follia" che mi aveva colpito e' passato.... :p
Il programma non ha niente che non va ma ti spiego perche' "credi" che non
funzioni:
Tu quando vai ad aprire il file che generi trovi solo il quadratino nero
perche' l'editor con cui lo apri cerca di interpretare quanto presente nel
file secondo i suoi standard (decodificandolo a secondo della codifica usata
sul sistema in uso)
Se provi a usare il tuo prog modificato come segue allora vedrai che e'
tutto apposto :)
#include<stdio.h>
#include<conio.h>
void main(){
 int a=0;
 FILE *fp;
 printf("Inserisci un numero: ");
 scanf("%d",&a);
 fp=fopen("Numeri.txt","w");
 fwrite(&a,sizeof(int),1,fp);
// Qui iniziano le righe aggiunte da me
 fclose(fp);
 a=0;
 fp=fopen("Numeri.txt","r");
 fread (&a,sizeof(int),1,fp);
//Qui invece finiscono


 getch();
getchar();
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
It can't rain forever,
but you can die before seeing the sun again.

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

provalexprovalexprovalex

provalexprovalexprovalex
Newsgroup: it.comp.lang.c
Titolo: Perchè non funzia??

Hi raga,
ho un problemino da neofita su un programmino che stavo codando in
queste ore, ma non riesco a capire il perchè non funzioni :((  , spero
che qualcuno di voi possa darmi una mano!
In pratica vorrei aprire un file (contenente una singola stringa per
riga) ed stampare l'output su un'altro file facendo attenzione di
eliminare i doppioni. 
Purtroppo il file che mi crea rimane vuoto... 
Vi riporto la parte di source che non funzia correttamente:
...
 int n , i;
   char buf[500][150], buff[500][150];
   char *loc;
   FILE *fi;
   FILE *fo;
....
...
n = 0;
while(!feof(fi)) {
        fscanf(fi, "%s", buf[n]) ;
        i = 0;
   while(!feof(fo)) {
         fscanf(fo, "%s", buff[i]);
          if ((loc = strstr(buf[n], buff[i])) == NULL)
            fprintf(fo, "%s\n", buf[n]);
   }    // end of internal while
    n = n + 1;
 }      // end of external while
...
Spero in un vostro help!
bye e grazie.

Non so se ho capito bene cosa intendi per "doppioni", ma a prima vista
posso notare che la prima volta che entri nei cicli i=0, n=0,
cosicche' la seconda fscanf() "scrive" sopra quello che la prima aveva
caricato.
Inoltre non specifichi una cosa importante: come apri i due file!
A seconda della modalita' che utilizzi, puoi "accodare" i dati alla
fine del file di uscita, azzerarne il contenuto fin dal suo primo
utilizzo, spostarti all'interno del file ed eventualmente
sovrascrivere i caratteri/numeri successivi.
A meno che tu non utilizzi funzioni di I/O a basso livello non c'e' un
modo diretto di leggere qualcosa ed eventualmente cancellarla; questa
funzionalita' e' propria delle funzioni di I/O a basso livello del C
che "spostano a tuo piacimento" il successivo carattere/numero da
leggere nel file.

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

Come si fa a modificare il contenuto di un puntatore se viene passato ad una
funzione?
Cioe': se ho una funzione
...
miotipo *pt;
pt=NULL;
miafunz(pt);
if(pt !=NULL) scrivi qulacosa
....
void miafunz(miotipo * pt){
if(qualcosa)
 pt=qulacosaltro;
}
Succede che pt venga modificato come se fosse passato per valore e non per
riferimento, cioe' pt rimane a NULL una volta che si torna dalla funzione.

void miafunz(miotipo * pt){
void miafunz(miotipo **pt){
     if(qualcosa)
       *pt=qulacosaltro;
}
-- 
Andrea Laforgia
"God is dead." -- Nietzsche
"Nietzsche is dead." -- God

 ha scritto nel messaggio news:JeM4a.271319$AA2.10...@news2.tin.it...

Infatti, perche` un puntatore e` una variabile, e se lo passi ad una funzione il suo *valore* (cioe`
l'indirizzo a cui punta) viene passato per valore. Puoi modificare il contenuto della variabile a
cui punta, ma se vuoi modificare l'indirizzo puntato devi passare un puntatore a puntatore (ti ha
fatto l'esempio Laforgia).
Ciao,
Cecco
Newsgroup: it.comp.lang.c
Titolo: Usare i socket

Salve a tutti, 
spero di non essere OT.
Vorrei imparare ad usare le syscalls (ambiente Linux) relative ai socket, ma
non ho mai usato i socket in nessun linguaggio. Visto che il C e' il mio
linguaggio preferito, ho pensato di cominciare con lui.
Ho gia' scritto un programmino (parte server) che pero' non funziona affatto
e quindi ho rinunciato a scrivere il client.
Qualcuno potrebbe farmi vedere un esempio classico di utilizzo dei socket
(parte server + parte client) in ambiente Linux? Oppure dirmi dove posso
trovare queste cose su internet? Cmq ecco il mio programmino difettoso;
sarei curioso di sapere che cosa ho dimenticato... 
Forse non gli ho fornito correttamente l'indirizzo IP 
(perche' NON sono capace), o forse perche' non ho capito bene la sintassi di 
int socket(int domain, int type, int protocol).... 
Non ho capito cosa gli devo passare per domain ecc..... 
(((SONO un principiante GRAVE nel networking.....))) 
1024*Grazie!!!!
/* Usare i socket in C/C++ ... */
/* Parte server ... */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/socket.h>
int main() 
{
 
   int fd,ris,sconn,newsock,nbytes;
 
   char buf[1024];
 
   fd = socket(PF_LOCAL, SOCK_STREAM, PF_LOCAL);
 
   printf("socket id: %i\n", fd);
 
   if (fd == -1) 
     {
        fprintf(stderr, "Non riesco ad aprire il socket\n");
        fprintf(stderr, "%s\n", strerror(errno));
     }
 
   __SOCKADDR_ARG addr;
 
   socklen_t size=sizeof(addr);
 
   ris = getsockname(fd, addr, &size); 
 
   if (ris == -1) 
     {
        fprintf(stderr, "Non riesco a leggere il nome del socket\n");
        fprintf(stderr, "%s\n", strerror(errno));
     }
 
   ris = listen(fd, 1);
 
   if (ris == -1) 
     {
        fprintf(stderr, "Errore in listen\n");
        fprintf(stderr, "%s\n", strerror(errno));
     }
 
 
   newsock = accept(fd, addr, &size);
 
 
   if (newsock == -1) 
     {
        fprintf(stderr, "Errore nella preparazione del socket\n");
        fprintf(stderr, "%s\n", strerror(errno));
     }
 
 
   nbytes = recv(fd, buf, 1024, 0); 
   if (nbytes == -1) 
     {
        fprintf(stderr, "Errore nella ricezione\n");
        fprintf(stderr, "%s\n", strerror(errno));
     }
 
   printf("bytes = %i\n", nbytes);
   printf("string buffer = '%s'\n", buf);
 
   ris = shutdown(fd, SHUT_RDWR);
 
   if (ris == -1) 
     {
        fprintf(stderr, "Non riesco a chiudere il socket\n");
        fprintf(stderr, "%s\n", strerror(errno));
     }
 
 
   return 0;
}
-- 
Vladislav Valtchev

 }
x-post e f/up sul gruppo giusto.
Kronos
-- 
Home: 
http://kronoz.cjb.net
Sono un mirabile incrocio tra Tarzan e Giacomo Leopardi.
In me convivono tutte le doti intelluttuali di Tarzan e
tutta la prestanza fisica di Giacomo Leopardi.
A. Borsani

 
dai un'occhiata a 
www.ecst.csuchico.edu/~beej/guide/net/
ciao ..

Newsgroup: it.comp.lang.c
Titolo: Lettura Float

Ciao a tutti.
Ecco il mio problema:
Ho questa struttura:
typedef struct point
{
	int node_num;
	float x,
	       y;
} point;
e dichiaro un array di questo tipo:
point p[DIMENSION];
poi devo andare a leggere dentro un file un intero e due float per ogni
riga del tipo:
0 0.765283764829 0.827463782922
1 0.823897748378 0.238238974749
.....
ecc
i float sono di 12 cifre...
Per andarli a leggere ho usato il seguente ciclo for:
for(i=0; i<DIMENSION; i++)
	{
		fscanf(cities, " %d %f %f", &(p[i].node_num), &(p[i].x), &(p[i].y));
		printf("%d %.12f %.12f\n", p[i].node_num, p[i].x, p[i].y);
	}
dove DIMENSION è il numero di punti definito a priori...cities è il
puntatore a file..
con questa cosa  mi legge i float ma le ultime cifre me le scrive
errate...
Ho provato anche a mettere in lettura "%.12f" come nella stampa a video
ma poi mi scrive della robaccia..
Come faccio a dirgli di leggere un float di 12 cifre?
Marco.

 Come faccio a dirgli di leggere un float di 12 cifre?
Non puoi...
una variabile di tipo float, e' tipicamente memorizzata su 4 byte,
e quindi non puo' proprio avercele 12 cifre di precisione, se
tieni conto che in quei 32 striminziti bit deve memorizzarci oltre
alla mantissa anche il segno e l'esponente.
Per aumentare la precisione devi usare il tipo "double" al
posto del tipo "float",
e in lettura devi usare "%lf" per leggerlo, mentre
per stamparlo va ancora bene "%f"
ciao,
g.
Newsgroup: it.comp.lang.c
Titolo: feof e fread...problema...

Ciao a tutti :)
Ho un problemino...in pratica mi sono accorto (ed ho trovato conferma 
con l'amico google :) )che feof e fread creano problemi in codizioni simili
  while(!feof(fp)) {
 
	 tmp = g_malloc(sizeof(allenamento));  /* alloca */
          fread (tmp , sizeof(allenamento), 1 ,fp);	
 
	 lista = g_list_append(lista,tmp);
 
  }
ed in effetti mi ritrovavo con un campo nella lista in piu' rispetto al 
normale...
Il mio problema e' ...come faccio a utilizzare fread come condizione di 
uscita dal while se tmp non e' ancora stato allocato al momento della 
chiamata di fread? (tmp e' un puntatore a una struttura di tipo 
allenamento).
while (fread (tmp , sizeof(allenamento), 1 ,fp)
{
  /* fa qualcosa */
}	
 
grazie 1000 per l'aiuto!
Aragorn

 allenamento).
Ho provato nel modo qui sotto e funziona...ma esiste un metodo piu' 
scaltro per evitare di copiare tutti i parametri da aux a tmp o la 
soluzione che ho trovato e' l'unica possibile?
  allenamento aux;
  while (fread (&aux , sizeof(allenamento), 1 ,fp))
  {
    tmp = malloc(sizeof(allenamento));
 
    tmp->data = aux.data;
    strcpy (tmp->luogo,aux.luogo);	
 
    strcpy (tmp->commento,aux.commento);
 
    tmp->kilometri = aux.kilometri;
 
    lista = g_list_append(lista,tmp);
  }	
Ciao e grazie
Aragorn

   }
--
Giorgio Silvestri
DSP/Embedded/Real Time OS (RTOS) Software Engineer

 è più parametrizzato.
Ciao! Cosa intendi con questa frase?
Grazie 1000 come sempre per l'aiuto!
Aragorn

 Ciao! Cosa intendi con questa frase?
In generale in una come la seguente:
  while (fread (&aux , sizeof(allenamento), 1 ,fp))
se aux dovesse cambiare di tipo, es:
    NuovoTipoPerAux aux;
allora dovresti riscrivere:
  while (fread (&aux , sizeof(NuovoTipoPerAux), 1 ,fp))
cioč ti devi "ricordare" che devi fare un ulteriore cambiamento
in tutti i punti dove usavi sizeof(allenamento) e potresti
anche dimenticartene...
Mentre con:
    while (fread (&aux , sizeof(aux), 1 ,fp))
ciň non č necessario, hai meno codice da modificare.
Idem con:
    tmp = malloc(sizeof(*tmp));
Hai reso quindi piů "parametrico e/o portabile"
il tuo codice.
Forse in un frammento cosě breve
non č evidente il vantaggio, ma con la dimensione
del programma che aumenta puň essere un vantaggio non
da poco.


 allenamento).
A tua scelta:
  tmp = g_malloc(sizeof(allenamento));
  while ( fread (tmp , sizeof(allenamento), 1 ,fp) ) {
     lista = g_list_append(lista,tmp);
     tmp = g_malloc(sizeof(allenamento));
  }
  g_free( tmp );
oppure:
  while(!feof(fp)) {
      tmp = g_malloc(sizeof(allenamento));  /* alloca */
      if ( fread (tmp , sizeof(allenamento), 1 ,fp) )
    	lista = g_list_append(lista,tmp);
      else
         g_free( tmp );
  }

 da poco.
E' geniale! Non ci avevo pensato!
Grazie 1000 per la dritta!
Aragorn
Newsgroup: it.comp.lang.c
Titolo: tipi e memoria allocata

avrei bisogno un chiarimento, il mio libro dice...
"un compilatore C allooca normalmente + memoria x una variabile di tipo
double che x una di tipo float (anche se non è detto che ciò avvenga
sempre)"
perchè non sempre?
poi...
"un float è memorizzato in 4 byte e un double in 8 byte, quindi con un
insieme di valori compresi circa tra 1E-38 e 1E+38 per un float e
1E-308 e 1E+308 per un double"
come arriva a calcolare questi limiti?
grazie mille, anzi... 1E3    ;-)

 come arriva a calcolare questi limiti?
Ci arriva perche' non ti dice tutto! Di quei bit, uno e' dedicato al 
segno, un bel po' alla mantissa e i restanti all'esponente. Sapendo 
esattamente questi tre numeri, arrivi ai limiti di cui sopra.
 
 Ciao
 Federico

tutto chiaro, grazie!
BdG

 
Per calcolare i limiti di cui parli devi calcolare che:
dei 32 bit utilizzati da un float 1 e' per il segno, 8 sono per 
l'esponente e 23 per la mantissa, sapendo che il bias e' 127 puoi fare 
questo ragionamento:
[ 2^-126, (2-2^-23)*2^127] <- ~10^38
Lo stesso calcolo puoi farlo per un double.
www.vettigli.tk

cos'è il bias? non ho capito...
thanx

 cos'è il bias? non ho capito...
In varie discipline, il bias è un errore sistematico o una semplificazione.
Nei calcolatori per memorizzare dei numeri interi e' presente (ma non e' 
unica) la rappresentazione biased, essa e' usata per l'esponente dei 
floating point.
Non mi mettero' a spiegare come funziona la rappresentazione biased ma 
forse ai fini della tua domanda ti puo' essere utile sapere che un 
numero intero k su n bit puo' esprimersi con la formula 
r_B(k)=k+B=k+(2^(n-1))-1 dove B e' il bias adottato per la memorizzazione.

 come arriva a calcolare questi limiti?
I limiti derivano dalla lunghezza in bit delle varie strutture che 
compongono il numero a virgola mobile: segno/esponente/mantissa.
Questo link può aiutarti a comprendere:
http://stevehollasch.com/cgindex/coding/ieeefloat.html
Newsgroup: it.comp.lang.c
Titolo: Inviare files ad un indirizzo IP

Un mio amico possiede un Plotter (che poi e' praticamente una Stampante)
collegato tramite Scheda di Rete alle altre Stazioni CAD, sulle quali,
viene utilizzato WinNT 3.51.
Di suddetto dispositivo si conosce lolo l'indirizzo IP: 192.1.1.94
Il nostro obiettivo e' quello di Inviare dei Files di Plottaggio (che
cioe' sono gia in un formato Stampabile dalla periferica, tipo HP-GL/2)
tramite la Shell di MS-DOS sotto Windows NT (3.51, appunto).
Da quanto mi e' sembrato di capire, cercando info qua e la', sembra che
non esista un modo diretto per accedere al Plotter tramite un comando
DOS tipo:
  copy miofile.plt \\plotter /b
ma, bensi', e' necessario utilizzare degli appositi programmi (che
probabilmente non costano poco).
***
Detto questo, vorrei chiederVi: ritenete sia troppo difficile creare un
programmino che, dandogli in "pasto" l'indirizzo IP ed il File di
Plottaggio, si occupi della Spedizione ?
E' da considerare che non ho esperienza sufficiente su queste
problematiche e che comunque non potro' testare eventuali sviluppi
direttamente (dovro' spedirgli via E-mail le varie beta, ecc...) :(
Se qualcuno fosse cosi' gentile da indicarmi qualche sito utile o magari
anche un pezzo di codice (ammesso che non sia una cosa troppo onerosa)
gliene sarei grato ;)
Cordiali saluti a Tutti, U D A.
PS: Come ambiente di sviluppo utilizzerei il GNU Gcc per C/C++.
-- 
<><><><><><><><><><><><><><><><><><><><><><><><
UDA'Software
mailto:
u...@freemail.it
mailto:
uda.so...@iol.it
http://www.GeoCities.com/SiliconValley/Bay/2165

...


Newsgroup: it.comp.lang.c
Titolo: Webmaster WWW.PROGRAMMAZIONE.IT

Qualcuno sa dirmi come mettermi in contatto con il webmaster di
www.programmazione.it
 o con qualcuno della redazione per avvertirli che il
sito non č visualizzabile con abbonamenti ADSL Tin.it (forse anche con altri
gestori).
Il motivo non lo conosco... ma non sono l'unico ad avere questi problemi.
Grazie.

 sito non è visualizzabile con abbonamenti ADSL Tin.it (forse anche con


Newsgroup: it.comp.lang.c
Titolo: Offerta di lavoro per PROGRAMMATORE JAVA

Euclide Active Training srl ricerca Programmatore Java.
Requisiti richiesti: comprovata esperienza in ambito Java e maturata
competenza in XML.
I candidati possono inviare dettagliato c.v. a: 
off...@euclide.it
, citando
il riferimento NGPJXML.
Luogo di lavoro: Firenze.

Direi che questo NG non sia proprio indicato per annunci di questo genere! :-(
Rispettiamoci!

Newsgroup: it.comp.lang.c
Titolo: Makefile

Devo fare un Makefile in Linux in cui linko il mio programma (pippo.c)
ad una libreria dei Numerical Recipes (lib.a    che contiene i
sorgente e gli oggetto di oppurtune routine ... )
E' giusto mettere il path di dove trovare questa libreria nel mio
makefile? I comandi #include <nr.h> #include <nrutil.h> devo metterli?
Se si, li metto nel mio pippo.c ?
In generale come è il makefile che devo fare ?
Grazie mille a tutti, sto imparando da pochi giorni e ho poco tempo
...
Antonio

Se si, li metto nel mio pippo.c ?
Saresti piu' in tema su it.comp.os.linux.development, qui ti spiego la
parte che riguarda il C standard. Se ti rimandono dubbi specifici
chiedi al NG specifico :)
Quando dai una direttiva #include <header.h> tu stai dicendo al
preprocessore di cercare nella root del path standard per gli header
file (sotto linux potrebbe essere /usr/include, sotto window per dev-C
sara' $DEV_C_PATH/include, e cosi' via).
Poi il linker cerchera' la libreria compilata (che immagino vorrai
linkare dinamicamente) in un particolare path per le librerie... per
come fare sotto Linux ti rimando al ng apposta.
Puoi dire al GCC (in tutti i suoi porting) e a ogni compilatore di
"estandere" il path standard per cercare le librerie a gli header. Per
il GCC usi le opzioni -I per gli header e -L per le librerie (con un
man gcc ti vedi come usarle).
In tutto questo il make non c'entra praticamente, sono tutti comandi
per il compilatore. Il fatto che poi tu voglia usare alcune variabili
del make per semplificare la gestione e' un'altro discorso.
-- 
Mox
"Trust the programmer."
"Don't prevent the programmer from doing what needs to be done."
"Keep the language small and simple."
"Provide only one way to do an operation."

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

buongiorno a tutti,
qualcuno potrebbe consigliarmi
una buona guida che riguardi i socket?
grazie
h0m3r

 wrote in message
news:007kr9...@192.168.1.1...

Guide non so. Cmq cerca con google alcuni source code relativi a trojan e
backdoor. Sono una Bibbia.
Byes
FusionFai

 ha scritto nel messaggio
news:007kr9...@192.168.1.1...

Basta cercare il sito ufficilae della libreria libsocket ....lě trovi un
collegamento "links"....clicca e trovi tutto quello che vuoi ... appena
finisco e avrň il consenso degli autori pubblicherň sul mio sito alcune
traduzioni in italiano di questi tutorials ...nel frattempo studiate da
soli.....!!!!
Newsgroup: it.comp.lang.c
Titolo: Passare una funzione come parametro

Ciao a tutti,
Non mi capita spesso di avere a che fare con parametri funzione come
questo:
void foo( ..., float (*func)(float []), ...)
sapete dirmi come deve essere fatto il passaggio di questo parametro, e
come la funzione deve essere dichiarata ?
Grazie.
LB


Niente di speciale, in realtà
Come nel prototipo che hai indicato, uno dei parametri è float (*func)
cioè un puntatore a funzione che ritorna un float. In generale
returntype (*func), e poi volendo anche i tipi degli argomenti (float[])
ad esempio dice al compilatore che la funzione passata come argomento
deve avere a sua volta un unico argomento, un array di float. Quindi
insomma se un argomento di una funzione è un puntatore a funzione, lo
indichi type *(func)(args type declarations).
Come passi un puntatore ad una funzione in una chiamata?
Semplicemente passi il nome della funzione, ad esempio, supponiamo:
int method_1(struct unit *todo)
{
	/* Fa qualcosa */
	return(status);
}
void foo(int whichone, struct unit *a, int (*specialist)())
allora chiameremo foo ad esempio così:
foo(23, myptr, method_1);
Come usi tale parametro in foo?
(*specialist) (argomenti);
ciao.

 come la funzione deve essere dichiarata ?
float funzione( float [] ); // la dichiarazione
foo( funzione ); // il passaggio
EMG

Newsgroup: it.comp.lang.c
Titolo: scrivere su lpt1

Ho la necessità di scrivere una serie di byte sulla porta parallela.
Mi sapreste dare uno spunto in C di come poter interagire con
l'uscita?
Grazie per la collaborazione, Michele

 l'uscita?
FILE *fp = fopen( "LPT1", "w" );
char c;
...
putc( c, fp );
...
EMG

> FILE *fp = fopen( "LPT1", "w" );
Utilizzando le chiamate API equivalenti per aprire e chiudere file (o nel
caso la parallela) e collegando 2 PC con cavo laplink parallelo secondo voi
è possibile scambiarsi file ? (ideo un po' pazza, ma non troppo)
Ciao, Carlo

 è possibile scambiarsi file ?
Mi sembra di no.
EMG


Peccato, sarebbe stato bello.
Ciao, Carlo
Newsgroup: it.comp.lang.c
Titolo: compilatore c cerco

 penso - perchè mi serve per esercitazioni)
Non esiste UN compilatore del C ma ne esistono tanti di tanti produttori
diversi e per tanti sistemi operativi diversi. Sia a pagamento che
gratuiti. A te quale interessa?
EMG

ciao a tutti,
dove posso trovare in internet il compilatore del C (prima versione -
penso - perchè mi serve per esercitazioni)
grazie in anticipo
Buone feste

 wrote in message
83t4j1$8j9$1...@pegasus.tiscalinet.it...

Sul sito della Borland c'è la sezione Museo dalla quale puoi scaricare il
Turbo C v. 1, v. 1.5 e v. 2.01. Io ho preso l'ultima, naturalmente gira in
una finestra DOS di W98!
Ciao e auguri.

 prog lancio il programma Turbo Borland C 2.0 (non vorrei sbagliarmi).
Allora č, appunto, il Borland Turbo C 2.0. Segui le indicazioni che ti
ha dato Luciano.
EMG


Non saperi dirti con sicurezza; so che è in ambiente DOS e per aprire il
prog lancio il programma Turbo Borland C 2.0 (non vorrei sbagliarmi).
Se queste info non sono suff. grazie lo stesso per l'interessamento !!
grazie e BUONE FESTE
Ettore

Puppatelo qua
http://www.programmersheaven.com/zone3/cat215/index.htm
Cosě rinnovo la mia domanda, esistono librerie per gfx e sonoro valide ?
Ciao


Devi passare prima dalla sezione Community poi nel Museo
--
________________________________
Togliete NoSpaM per rispondermi
Buone Feste
bye Brain

 Grazie ancora e buon capodanno (DIVERTITEVI TUTTI ! ! ! ! ! ! ! ! )
Se vuoi un compilatore e anche un interfaccia un po' più carina, vai sul
sito della facoltà di ingegneria a Bologna alla pagina
http://www-natali.deis.unibo.it/
Nella pagina riservata agli studenti di fondamenti di informatica
dell'ultimo anno trovi il compilatore DJGPP + il RHIDE, un po' più
amichevole del TurboC
Inoltre si riesce a scaricare abbastanza velocemente...

Newsgroup: it.comp.lang.c
Titolo: Sono Disperato!!!

ragazzi aiutatemi, so di non essere un esperto di socket ma questo mi sembra
giusto
può essere colpa del dns, io vorrei il nome dato ip nient'altro
Grazie Grazie Grazie
char *ResolveIp(unsigned long ip){
    struct hostent *h;
    char nome[255];
    struct in_addr add;
    add.s_addr=inet_addr(ip);
   // printf("%g",add.s_addr);   //stampe di prova
    //printf("%s", inet_ntoa(add));
    h=gethostbyaddr(&add,sizeof(add),AF_INET);
    if(h==NULL)
        strcpy(nome,"Sconosciuto");
    else
        strcpy(nome,h->h_addr);
    printf("Nome %s , ",nome);
}
int main(){
 struct hostent *h;
 char ip[100];
       char *c;
   strcpy(ip,"66.102.11.99");
 unsigned long addr;
   addr=inet_addr(ip);
 ResolveIp(addr);
}

 può essere colpa del dns, io vorrei il nome dato ip nient'altro
Il linguaggio C standard non ha socket ne` DNS ne` IP.
Dovresti rivolgerti ad un newsgroup relativo al tuo sistema operativo, 
ad esempio it.comp.os.linux.development o it.comp.programmare.win32.
Newsgroup: it.comp.lang.c
Titolo: return di una funzione...

Salve a tutti, dunque vado ad esporre subito il mio probelma ;) :
Non riesco a capire come passare ad una funzione il risultato di un' altra
funzione.....
(Dopo aver visto l'esempio) Come posso far si che in main() venga a
conoscenza dei valori VERO
o FALSO ritornati dalla funzione funzione() , in funzione.c ??
Grazie a tutti,
Nope
faccio un esempio:
main.c:
----------
main()
{                             
funzione();                        
}
funzione.c :
-------------- 
funzione() 
{
char si_no[3];
char SI[3]="si";
char NO[3]="no";
int VERO;
int FALSO;
 
scanf("%s", si_no);
if(!strcmp(si_no,SI))  { VERO=0; }
if(!strcmp(si_no,NO  { FALSO=1; }
}

Eccolo:
int funzione() {
char si_no[3];    // Attenzione, cosa succede se digiti più di 2 caratteri?
crash!
 scanf("%s", si_no);
 if(!strcmp(si_no, "si"))
     return=0;
 return=1;
 }
int main() {
int valore;
valore = funzione();
 }
Comunque, senza offesa, ritengo che studiarti un libro sul C non ti farebbe
male; dal codice sembrerebbe che sei ancora agli inizi.
--
Alessandro Monti

 dedico al C, ma il libro che ho:
Guida completa al C (McGraw Hill) non mi aiuta molto .... forse dovrei
procurarmi il K&R ....
Grazie ancora
Nope



Grazie ancora,
Gabriele


> > return=0;  /* il compilatore restituisce: parse error before "=" */
Ovviamente ha ragione il compilatore. Mi dev'essere sfuggito perchè ho
sostituito i tuoi
TRUE=1;
con
return 1;
ma ho dimenticato il segno di uguale.
--
Alessandro Monti

 funzione.....
Mai sentito parlare del valore restituito da una funzione e dello
statement "return"? Guarda sul tuo libro o sull'help on-line del tuo
compilatore...
EMG

 
Perche' l'else che hai aggiunto si riferisce al secondo if, quindi se
si risponde "si" risulta vero il primo if, falso il secondo e di
conseguenza vero l'else. Avresti dovuto scrivere una cosa del tipo :
switch (VALORE) {
	case 0 : printf("VERO\n");
		 break;
	case 1 : printf("FALSE\n");
		 break;
	default: printf("ERRORE\n");
		 break;
}
che, se non conosci ancora il costrutto "switch", equivale a :
	if (VALORE == 0)
		printf("VERO\n");
	else if (VALORE == 1)
		printf("FALSO\n)";
	     else
		printf("ERRORE\n");
in questo modo i tre eventi si escludono a vicenda.
 Ciao, Luca.
 Reply to 
luca....@tiscalinet.it

  return=1;
!!!!!!!! ARGH !!!!!!!
solo perche' e' domenica e siamo tutti un po' a riposo con la testa
;-)   
