mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c
Titolo: [ot] nuovi argomenti

Ciao, vorrei sapere come vi comportate quando dovete lavorare con 
qualcosa di nuovo. Mi spiego meglio: volete fare (o vi viene richiesto 
per lavoro) un programma che riguarda argomenti di cui conoscete poco o 
niente. Come procedete? Andate a tentativi? Leggete il primo tutorial 
online che trovate? O vi studiate qualche libro da 1500 pagine 
sull'argomento? Ovviamente dipende da quello che si deve fare, lo so, ma 
vorrei comunque farmi un'idea.
-- 
Devaraja (Xdevaraja87^gmail^c0mX)
Linux Registerd User #338167
http://counter.li.org


Premesso che il mio contributo viene da un'esperienza esclusivamente 
universitaria (faccio Informatica) ti posso dire che generalmente inizio 
a cercare con google materiale utile per farmi un'idea ed eventualmente 
iniziare a scrivere qualcosa (nel caso dei linguaggi) e intanto mi 
comincio ad informare su dei buoni titoli cartacei da procurarmi.
	ciao, rz
-- 
http://mrzac.altervista.org

 comincio ad informare su dei buoni titoli cartacei da procurarmi.
...č ciň che fanno i professionisti stessi ;-)
Newsgroup: it.comp.lang.c
Titolo: [UI] utilizzo dei tasti freccia nell'input

Ciao a tutti
mi servirebbe qualche dritta su come poter sfruttare all'interno di un prog,
tipo editor di testo, lo scroll tramite tasti di freccia.
Ho sempre usato dei moduli scritti in c++ da un prof  all'univ, ma essendo
utilizzabili esclusivamente a scopo didattico, non posso includerli nei miei
programmi, che scambio con amici, quindi mi chiedevo se era possibile
reperire da qualche parte delle librerie opensource o maggiori informazioni
su come realizzarne di mie!
Grazie a tutti ciao!
Root

 su come realizzarne di mie!
ncurses.h ???
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  |
+-----------------------------------------------------------+

se usi le api, devi intercettare il messaggio WM_KEYDOWN
case WM_KEYDOWN:
switch(wparam)
{
case VK_LEFT:
break;
case VK_RIGHT:
break;
case VK_DOWN:
break;
...
}
return 0;
Newsgroup: it.comp.lang.c
Titolo: macro e funzione

Ragazzi che differenza c'è tra una macro ed una funzione?
Grazie
Saluti

Ragazzi che differenza c'è tra una macro ed una funzione?
Una macro puoi vederla (un po' volgarmente) come una sostituzione
testuale, è come se usassi la funzione "sostituisci" o come si chiama
sul tuo editor. Questo passaggio non è fatto dal compilatore ma dal
preprocessore che potrebbe essere un programma completamente diverso
dal compilatore. Ad esempio
#include <stdio.h>
#define SOMMA(a, b) (a + b)
int main(){
    printf("%d\n", SOMMA(5, 3));
    return 0;
}
Elaborato dal preprocessore diventa:
#include <stdio.h>
int main(){
    printf("%d\n", (5 + 3));
    return 0;
}
Attento che le macro hanno comportamenti pericolosi, ad esempio
riprendendo l'esempio precedente:
#include <stdio.h>
#define SOMMA(a, b) a + b
int main(){
    printf("%d\n", SOMMA(5, 3) * 2);
    return 0;
}
Questo programma stampa 11 invece di 16, perchè? Semplice, le macro
sono una specie di sostituzione testuale, quindi il programma
precedente diventa:
#include <stdio.h>
int main(){
    printf("%d\n", 5 + 3 * 2);
    return 0;
}
E, come vedi, introno a "5 + 3" non ci sono parentesi. Un altro
problema può esserci se usi più volte lo stesso parametro, ad esempio
definedo ELEVA_ALLA_SECONDA come:
#define ELEVA_ALLA_SECONDA(num) (num * num)
Ci possono essere dei problemi se ad esempio hai codice come questo:
int f(void){
    int num;
    printf("Inserisci un numero: ");
    scanf("%d", &num);
    return num;
}
int main(){
    printf("%d", ELEVA_ALLA_SECONDA(f()));
}
Che viene trasformato dal preprocessore in:
int f(void){
    ...
}
int main(){
    printf("%d", f() * f());
}
Cioè ti sarà chiesto due volte di inserire un numero.
-- 
Marco Barisione (ICQ 84277092)

 Ragazzi che differenza c'è tra una macro ed una funzione?
Diciamo che la domanda è mal posta... nel senso che macro e funzioni sono 
due cose completamente diverse, e già questo risponde alla domanda.
Diciamo che possono esserci casi in cui una macro può essere definita in 
alternativa ad una funzione; la macro ha la caratteristica di venire 
espansa dal preprocessore, quindi prima della compilazione, per cui l'uso 
di una macro in alternativa ad una funzione è conveniente se si sfrutta 
questo aspetto. 
Gli esempi che ti ha postato Marco Barisione sono esplicativi sui pro e i 
contro.

due cose completamente diverse, e già questo risponde alla domanda.
Se le macro e le funzioni sono due cose diverse allora tra le macro e
le funzioni esiste una differenza: quindi la domanda e' ben posta.
E la prima risposta utile e': sono due cose diverse.

 E la prima risposta utile e': sono due cose diverse.
Anche l'unica :-)
Diciamo che, quando due cose sono concettualmente diverse, è più 
esplicativo esprimere le due definizioni + le eventuali similitudini 
piuttosto che elencare le differenze.
Newsgroup: it.comp.lang.c
Titolo: Calcolo di date in formato numerico

Il problema che mi si pone è come fare a calcolare la differenza tra,ad 
esempio:
 
  19991231 e 19990101 in modo che restituisca 364
e che riconosca gli anni bisestili da quelli non bisestili.
Un eventuale formula dovro' inserirla in excel,comunque dato che conosco 
il C non dovrebbero esserci problemi,semprechè sia una formula matematica 
che non faccia uso di qualche funzione particolare non standard.Infatti 
non esiste una versione C standard ANSI per un simile calcolo.E' un 
problema che mi si e' presentato sul lavoro e cosi ho pensato di chiedere 
a voi.Potreste pensare che excel fa gia' un calcolo simile in automatico 
infatti,ma come avete potuto vedere dall'esempio su riportato in questo 
caso si tratta di un formato numerico che non puo' essere alterato perchè
deve rimanere "compatibile" quando i fogli verranno trasferiti su un 
altro sistema.Questo è quanto mi hanno ordinato.
          Ciao!


ciao

Crea una colonna che abbia la data in formato umano, poi nascondila, oppure
falla su un altro foglio, oppure cambia solo il modo in cui è stampata a
video.
Credo ci siano parecchie soluzioni anche senza tirare fuori il C.
Se poi proprio vuoi, basta che sai come funzionano i calendari (anni
bisestili compresi) ed il gioco è fatto! Anche con le funzioni (macro, o
come vuoi chiamarle) di Excel!!!
--
Alessandro Monti

10000 thanks! :-)

Newsgroup: it.comp.lang.c
Titolo: AIUTOOOO^^

Scusate la pateticità^^
ma mi porto dietro sempre questo atroce dubbio su quale ambiente di sviluppo
convenga utilizzare. Naturalmente parlo per C e C++, un ambiente con un
debugger
ecc... ecc...
Ho intenzione per il momento di partire sotto windows ma poi in futuro nn so
ma i C e C++ non sono usempre loro per tutti?
Voi che compilatori o debugger utilizzate?
Datemi un consiglio, possibilmente freeware
Tnx
REC^^

 ha
scritto:

Per scrivermi togliete "111".

http://www.bloodshed.net/dev/devcpp.html
-- 
bye,
active
= Linux Gentoo Base System =
Newsgroup: it.comp.lang.c
Titolo: Scrivere file

e possibile scrivere un file invece che, in append, cio�
aggiungendo il testo dall'ultima riga presente nel file, ma
dalla testa del file, dall'inizio.
Vi ringrazio
Ciao

 su disco.
forse utilizzare fseek e partire dalla posizione zero del file?
Ciao

Z.zen ha scritto:

ma tu vuoi sovrascrivere i dati? allora non c'ï¿œ problema, ma sembrava di
capire che te vorresti un append all'inizio file ossia che mentre scrivi
 i dati quelli in fondo vengono spostati, praticamente vorresti
aggiungere dati in testa invece che in coda?
ho capito?
se vuoi solo sovrascrivere i dati non ci sono problemi, per il resto
l'idea del buffer ï¿œ una buona soluzione anche se obbliga ad utilizzare
la memoria intensamente, l'alternativa potrebbe essere:
* aprire un file temporaneo in scrittura
* scrivere i dati all'inizio
* leggere ciclicamente anche con un buffer di dimensioni oneste il
contenuto di file_da_modificare_in_testa
* chiudere file_da_modificare_in_testa
* chiudere file_temporaneo
* rimovere file_da_modificare_in_testa
* rinominare file_temporaneo in file_da_modificare_in_testa

 * rinominare file_temporaneo in file_da_modificare_in_testa
prover� con questo algoritmo.
Ciao

 buffer su disco.
Oppure si rinomina il file con un nome temporaneo, si riscrive il file 
dall'inizio e poi si aggiunge in fondo i dati dal file temporaneo.
E.

Z.zen ha scritto:

Ma il vecchi contenuto del file lo vuoi mantenere o lo vuoi cancellare? 
Se fai fseek all'inizio del file, vai a sovrascrivere il contenuto.
E.

 E.
mi pare corretto.
Ciao
Newsgroup: it.comp.lang.c
Titolo: moltiplicazione fra 2 array

Salve,
ho la necessità di eseguire una moltiplicazione fra due array!
Mettiamo una cosa semplice:
int a[1,5,6], b[3,8,6];
poi una variabile risultato la devo inserire come double? oppure come altra
array?
Poi altro dubbio...cosa faccio? una nidificazione di cicli for in modo tale
che per ogni b[i] lo moltiplichi per a[j] a[j-1] a[j-2] e poi il risultato
delle tre moltiplicazioni lo metto in un array e ripeto il tutto per le
altre i di b...impostando il max di cifre da inserire per prepare
altrettante array per i parziali della moltiplicazione...perchè non so di
preciso se posso usare array bidimensionali!
quindi una cosa del genere:
a[ ]              23x
b[ ]              12=
                =====
temp1[ ]     46
temp2[ ]   23
                =====
                 276
Oppure avete altre soluzioni da proporre?
Ovviamente qui faccio riferimenti a 3 cifre per parte...ma la cosa dovrebbe
essere estendibile a qualsiasi numero inserito (chiaramente con un max di
cifre prestabilito!)]
grazie 1000
Byez
B@STI
--
Per risposte private...togliere ".yo"

 ho la necessità di eseguire una moltiplicazione fra due array!
   Moltiplicazione di che tipo? L'algebra vettoriale ne prevede almeno 
tre: il prodotto scalare, quello vettoriale e quello membro a membro. Di 
altri non ne sono a conoscenza. Qual e` il tuo caso?
Prodotto scalare:
	int i,c=0;
	for(i=0;i<3;i++) c+=a[i]*b[i];
Prodotto vettoriale:
	int c[3];
	c[0]=a[1]*b[2]-a[2]*b[1];
	c[1]=a[0]*b[2]-a[2]*b[0];
	c[2]=a[0]*b[1]-a[1]*b[0];
Prodotto membro a membro:
	int c[3],i;
	for(i=0;i<3;i++) c[i]=a[i]*b[i];
-- 
Alla prossima,
Marco

cifre prestabilito!)]
prestabilito? Mi sembra che il limite è solo nella memoria allocabile
con malloc o calloc
saluti

grazie molte per le risposte :)
byez
B@STI

Newsgroup: it.comp.lang.c
Titolo: LD.EXE . . . apparente BUG . . . aiuto

Ciao a tutti...
...ho un piccolo problema
devo linkare una libreria *.a con ld.exe
uso la seguente sintassi ld -l <libreria.a> <file.o>
 
ora accade il bello... mi viene generato un errore come "non posso
trovare il fila -l<libreria>"... e cosě mi ritrovo a non poter usare il
gmp.
Come compilatore ho installato djgpp, l'ultima versione... anche se
faccio eseguire il link dal rhide mi viene generato lo stesso errore...
...qualcuno puň aiutarmi... mi basta anche un link dove scaricare una
versione "bugs free" di ld.exe.
Ciao e grazie...
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 gmp.
Hai provato a copiare la libreria in un posto in cui ld la sappia cercare?
Specifichi il path completo oppure no? Prova ad invocare gcc <file.o> -o
<file definitivo> -l<nome libreria>. Se la libreria č nella directory giusta
ed ancora non la linka, fa' in modo che il nome inizi per lib: ad esempio,
se la liberia si chiama giampi tu chiama il file libgiampi.a.
Credo che che ld non abbia bug di questo tipo.
Saluti,
Lanugo

 Lanugo
Grazie comunque per la risposta...
...ciaoo
EDI
Newsgroup: it.comp.lang.c
Titolo: getch in Linux

Ciao a tutti!
Il seguente programma (complicatissimo) mi genera errori se compilato in
linux, mentre in windows (Borland o anche M$ Visual Studio) non da alcun
problema..
=============================================
#include <stdio.h>
#include <curses.h>		/* In Win metto #include <conio.h> */
int main()
{
	char c;
	c=getch();
 
	printf("il carattere digitato č:	%c",c);
}
=============================================
compilo:
gcc prog.c -o  prog
undefined reference to 'stdscr'
undefined reference to 'wgetch'
???????????????????????
Qualcuno mi sa dire xč non posso usare la getch()?
Devo per forza usare getchar()? Perchč a me servirebbe una funzione che
riceve un carattere da tastiera e lo salva nella variabile, 
senza bisogno di premere invio, oppure una funzione che mentre visualizzo
una pagina di output, si metta in attesa che l'utente "digiti un
tasto per continuare", ripeto, senza bisogno di digitare il tasto invio
dopo l'inserimento del carattere.
Grazie a tutti!
Ciauz
Mauro

 undefined reference to 'wgetch'
Bhe, e' abbastanza evidente. Tu includi conio o curses a seconda del
sistema operativo, sperando che le funzioni vengano utilizzate nello
stesso modo. Essendo due librerie diverse, richiedono codice diverso.
Le curses (o ncurses) necessitano la  creazione di un "nuovo schermo" su
cui operare. Dovresti quindi aggiungere
initscr() all'inizio del codice e
endwin() alla fine.
Se vuoi del codice portabile, ti consiglio di usare solo le ncurses, di
cui esiste un port per windows, e compilare nelle due piattaforme lo
stesso identico codice.
Cmq,
qui sei un po' ot. Forse e' meglio it.comp.os.linux.development
Ciao,
Riccardo
-- 
-=Riccardo Galli=-
 _,e.
s~  ``
 ~@.   ideralis Programs
.   ol 
 `**~  
http://www.sideralis.net

 Riccardo
 
Ho capitt... speravo fosse + semplice la cosa! :P
dov'è che posso trovare un "manuale" che insegni ad usare al meglio qs
libreria?
Thanks!!
Mauro

Niente niente...
Ho trovato tutto su google..
Mauro

Newsgroup: it.comp.lang.c
Titolo: installazione djgpp

salve a tutti...sono nuovo e sto cercando di imparare il linguaggio C, ma
ancora sono all'inizio, anzi, prima dell'inizio!
Sono andato sul sito 
www.delorie.com
 e ho scaricato alcuni file: bnu2951b, djdev, gcc e altri, tutti in formato
zip.
quando li scompatto, devo estrarre tutti i file, compresi quelli delle
sottodirectory nella stessa directory DJGPP oppure posso lasciare tutte le
sottodirectory create da lui?
sapete dirmi?
grazie ciao!
--
Carlo!!
clikka per scoprire come guadagnare online!
http://www.inquadra.com/skaranoid/


 Lasci le cose come stanno....se usi winzip apri i tuoi zip e gli estrai
in c:\djgpp conservando le sue directory
Newsgroup: it.comp.lang.c
Titolo: Aiuto: qualcuno mi trovi l'errore.

#include <stdio.h>
 #include <windows.h>
 #include <stdlib.h>
//..........................................................................
..
 #include <sql.h>
 #include <sqlext.h>
file://---------------------------------------------------------------------
-------
  SQLHENV henv1;
  SQLHDBC hdbc1;
  SQLPOINTER sqlEnvAtt1;
//--------------------------------------------------------------------------
--
 void ConnectDatabase (SQLCHAR *iconnstrg, SQLSMALLINT istrlngt,
SQLCHAR *oconnstrg, SQLSMALLINT oconnbuflngt, SQLSMALLINT *ostrlngtptr)
 {
 SQLRETURN rc;
 int err1, err2, err3;
sqlEnvAtt1 = "SQL_OV_ODBC3";
err1 = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv1);
err2 = SQLSetEnvAttr(henv1,SQL_ATTR_ODBC_VERSION,sqlEnvAtt1,SQL_NTS);
err3 = SQLAllocHandle(SQL_HANDLE_DBC, henv1, &hdbc1);
  printf ("%d\n%d\n%d\n",err1,err2,err3);
 rc = SQLDriverConnect (hdbc1, NULL, iconnstrg, istrlngt, oconnstrg,
oconnbuflngt, ostrlngtptr, SQL_DRIVER_NOPROMPT);
SQL_NTS);
 if ((rc == SQL_SUCCESS) || (rc == SQL_SUCCESS_WITH_INFO))
  printf ("SUCCESS!\n");
 if ((rc == SQL_NO_DATA)) printf ("No data.\n");
 if ((rc == SQL_ERROR)) printf ("Error.\n");
 if ((rc == SQL_INVALID_HANDLE)) printf ("Invalid handle.\n");
 }
//--------------------------------------------------------------------------
--
 void CloseConnection (void)
 {
 SQLDisconnect (hdbc1);
 SQLFreeConnect (hdbc1);
 SQLFreeEnv (henv1);
 }
//--------------------------------------------------------------------------
--
 void main (void)
 {
 SQLCHAR *outstrg [1048];
 SQLSMALLINT *oustrptr;
 ConnectDatabase ("driver={Microsoft Access
Driver(*.mdb)};dbq=Contatore.mdb;", SQL_NTS, *outstrg, 1048, oustrptr);
 CloseConnection ();
    }
file://---------------------------------------------------------------------
-------
Eseguendolo, risponde:
0
-1
-1
Invalid handle.
Ciao, e grazie a tutti.

(omissis)
Naturalmente file:// non č un'idea mia ma di outlook.
Ciao.


[SQL]
Nel listato non ho notato errori, ma non conosco le API SQL; questo
gruppo parla del C senza far riferimento a particolari librerie.
Ah, sistema la "R:" del tuo outlook. :-)
-- 
Saluti,
    Mardy

 wrote in message
20010430080758....@pupilla.local...

Newsgroup: it.comp.lang.c
Titolo: valore assoluto di float

Salve a tutti,
 dovendo ottenere (come float) il valore assoluto di un float, devo
usare fabs, vero ?
Se e' cosi' posso lasciar perdere il warning che mi viene fuori
(possibile perdita di dati nella conversione da double a float) vero ?
Grazie.

(possibile perdita di dati nella conversione da double a float) vero ?
E' strano che produca quel warning se gli passi un float, dovrebbe farlo se
gli passi un double castato a float o non castato per nulla.
Lanugo

 gli passi un double castato a float o non castato per nulla.
visto che il prototipo dovrebbe essere qualcosa del genere:
double fabs(double numero)
il warning viene dato sul valore di ritorno, non sul parametro della
funzione.
ciao
Kronos
-- 
Home: 
http://kronoz.tsx.org
"L'abilita' politica e' l'abilita' di prevedere quello che
 accadra' domani, la prossima settimana, il prossimo mese e
 l'anno prossimo. E di essere cosi' abili, piu' tardi,
 da spiegare  perche' non e' accaduto."


float fnum,nnum;
.....
nnum=(-1)*fabs(fnum);
e mi da il warning che dicevo.
Per la cronaca, il tutto e' compilato col VC++5.0.
Ciao. 

 nnum=(-1)*fabs(fnum);
fabs, dice <cmath>, restituisce un double; -1 viene quindi promosso a
double e la moltiplicazione eseguita; il risultato (double) convertito
finalmente in float.  Da qui il warning.
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Univ. of Padova, Dept. of Physics - Padova, Italy            
lor...@pd.infn.it
The instructions said to use Windows 98 or better - so I installed FreeBSD.
Newsgroup: it.comp.lang.c
Titolo: problema ancora non risolto......

 }
Avete provato a stampare a video la stringa b, per vedere se
e' corretta?
printf("<%s>\n",b);
e prima ancora avete provato a stampare le singole voci
printf("<%s>\n",v->cognome);
etc.etc.
per controllare che siano a posto ?
ciao,
g.
**/
siamo riusciti a capire che "v"(un voce*) risulta essere nullo, quindi
punta al nulla.per forza ci da SegFault, quindi è questione di
assegnazione sbagliata, ma ANCORA ADESSO NON SIAMO RIUSCITI A CAPIRE
DOV'E' L'ERRORE.
Posto i risultati di alcune stampe:
/**
Non avevo provato, ora ho usato questo codice per controllare:
 printf("b (string): %s;\n", b);
 printf("b (pointer): %p;\n", b);
 printf("v (pointer): %p;\n", v);
 printf("v->nome (string): %s;\n", v->nome);
 printf("v->nome (pointer): %p;\n", v->nome);
 printf("v->cognome (string): %s;\n", v->cognome);
 printf("v->cognome (pointer): %p;\n", v->cognome);
 printf("v->citta (string): %s;\n", v->citta);
 printf("v->citta (pointer): %p;\n", v->citta);
 printf("v->telefono (string): %s;\n", v->telefono);
 printf("v->telefono (pointer): %p;\n", v->telefono);
 printf("v->commento (string): %s;\n", v->commento);
 printf("v->commento (pointer): %p;\n", v->commento);
Ma leggo soltanto:
 b (string): ;
 b (pointer): 0x804b498;
 v (pointer): (nil);
 v->nome (string): (null);
 v->nome (pointer): (nil);
 Segmentation fault
**/
queto è quanto, mi scuso per la lunghezza del post, ma per fare capire
il problema ho dovuto scrivere il codice.
Spero ad una risposta/aiuto....
P.S.questo è il link della vecchia discussione:
http://groups.google.com/groups?hl=it&lr=&frame=right&th=8c97ba4cd38b6401&seekm=1118479461.118858.86070%40g14g2000cwa.googlegroups.com#link1

Il punto e' che qui nessuno ha la sfera di cristallo.
Le stampe che riportate hanno un contenuto informativo pressoche'
nullo. Dicono solo che ad un certo punto avete sbagliato
qualcosa.
Il codice (parziale!) che avete inviato nell'altro thread
era errato e vi sono state suggerite diverse correzioni.
Non avete poi postato la versione che ritenete corretta.
Non vedo quindi come si possa aiutarvi.
L'unica cosa che posso dirvi e' di imparare ad usare il
debugger che c'e' sicuramente sul vostro sistema oppure di
mettere piu' stampe in modo da tracciare l'origine del
problema (questo pero' dovrebbe esservi venuto gia' in mente).
ciao,
g.
Newsgroup: it.comp.lang.c
Titolo: Re: centro di massa 3d aiuto!

 dicesse il procedimento per svolgerlo...la tracia è questa:
Il programma e' elementare e alla portata di chiunque
abbia preso in mano un manuale di C e abbia dedicato un paio
d'ore allo studio del linguaggio.
Quindi ti consiglio di darti un po' da fare, poi se proprio
non ci riesci posta qui il tuo programma non funzionante
che si cerca di capire insieme perche' non funziona.
g.

ciclo eliminando la prima riga..
FILE *fp;
int f,n;
int a,b,c,d;
char s [30];
// Apri il file che contiene i dati
fp = fopen ("data.txt","r");
if (fp == NULL)
   {
   printf ("\nIl dati sono spariti!\n");
   return 1;
   }
// Leggi la prima riga (n = numero di elementi)
fgets (s,30,fp);
sscanf (s,"%d",&n);
// Leggi gli n elementi
for (f=0;f<n;f++)
   {
   fgets (s,30,fp);
   sscanf (s,"%d %d %d %d\r\n",&a,&b,&c,&d);
   }
// E via cosi'...

programma che ho fatto io?? con delle array?
Certo, puoi usare un array di int, come avevi gia' fatto nel
sorgente che hai postato.
Definisci:
int vett_masse[10], mat[10][3];
e al posto del mio:
for (f=0;f<n;f++)
   {
   fgets (s,30,fp);
   sscanf (s,"%d %d %d %d\r\n",&a,&b,&c,&d);
   }
metti:
for (f=0;f<n;f++)
   {
   fgets (s,30,fp);
   sscanf (s,"%d %d %d %d\r\n",
           &mat[n][0],&mat[n][1],&mat[n][2],&vett_masse[n]);
   }

Newsgroup: it.comp.lang.c
Titolo: WOL (Wake on Lane), leggete...

Ciao a tutti!
Qualcuno conosce la tecnologia Wake on Lan?
Sapete dove posso trovare le funzioni che permettono di gestire un
computer in rete (attraverso WOL)?
Grazie a tutti.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 ha scritto nel messaggio
news:c4n9e1$71k$1...@news.newsland.it...


Newsgroup: it.comp.lang.c
Titolo: Posizioni decimali

Salve, ho fatto un piccolo e banale programma x convertire un numero
che rappresenta le lire in un numero che rappresenta gli euro.
Quello che vorrei chiedervi e' molto semplice: come tutti sappiamo con
la conversione in euro si terrano conto solo di 2 cifre decimali,
quindi il mio problema (stupido) e' proprio questo.
Come si fa a far stampare a video solo due cifre decimali? e
automaticamente, lui mi fa' l'arrotondamento?
Grazie a tutti x le eventuali risposte.
--
:-P
PZ "I'm a slave for you" & "Overprotected"

 ha scritto nel messaggio
news:p2tq1uohailj0h188...@4ax.com...

Newsgroup: it.comp.lang.c
Titolo: Problema banale

Salve a tutti, scusate la banalità del mio problema ma dello C sono un quasi
neofita.
Ho la seguente funzione:
char *  APIENTRY ASCII2EBCDIC(char stringa[]){
  int len = strlen(stringa);
   char *poutput = stringa;
  int i;
  strcpy(poutput, stringa);
  for(i = 0; i<len; i++)
  poutput[i] = a2e[stringa[i]];
  return poutput;
}
Che uso per convertire una stringa ASCII in una EBCDIC, a2e è l'array di
conversione
Il problema è che uso dal main
char S[100];
char S2[100];
S = "qualcosa";
S2 = ASCII2EBCDIC(S);
dopo questa riga S ed S2 coincidono!!!!
come faccio far lavorare la funzione su una copia del suo parametro?
Grazie sin da ora a chiunque voglia aiutarmi...
--
Live Long And Prosper
Emanuele Manco
Every generation has a legend... Every journey has a first step... Every
saga has a beginning...
E-mail: 
ma...@tiscalinet.it
Home Page: 
http://hpdma2.math.unipa.it/Manco/source.html
Stardate Home Page: 
http://hpdma2.math.unipa.it/Manco/stardate.htm

 la funzione su una copia del suo parametro?
<code>
	#include <string.h>
	/*
	 * Versione didattica di strcpy() con annessa conversione.
	 */
	char *ascii2ebcdic(const char *src,char *dst)
	{
		if(strlen(src)>strlen(dst)) return NULL;
	#ifdef A2E_HAS_NUL_CHAR_HANDLING
		do {
			*dst=a2e[*src];
			dst++;
			src++;
		} while(*src);
	#else
		while(*src) {
			*dst=a2e[*src];
			dst++;
			src++;
		}
		*(dst+1)='\0';
	#endif	/* A2E_HAS_NUL_CHAR_HANDLING */
		return dst;
	}
</code>
	Alla prossima,
		Marco

 char *  APIENTRY ASCII2EBCDIC(char stringa[]){
Potresti provare con qualcosa tipo:
char *ascii2ebcdic(const char *src, char *dest, int destlen)
{
	char *retval = NULL;
	if ((strlen(src) + 1) <= destlen) {
		for (retval = dest; *src; src++, dest++)
			*dest = a2e[*src];
		*dest = '\0';
	}
	return retval;
}
P.es.
      char S[100] = "qualcosa";
      char S2[100];
      ascii2ebcdic(S, S2, sizeof S2);
 
Ciao ciao,
Andrea
-- 
"...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and 
 the Ugly)."
(by Matt Welsh)


Tutte le soluzioni proposte, viste come C puro funzionano. Il problema è che
inserite in una DLL a cui poi si deve interfacciare VB o Delphi mi mandano
il sistema in crash!!!
Ambedue le soluzioni proposte necessitano di avere allocato in memoria lo
spazio necessario per la destinazione e funzionano solo se è presente. La
cosa non si accorda con le stringhe per come sono viste da VB o Delphi. Ma
comunque sono piene di spunti interessanti per entrare nella logica a
livello medio/basso dello C. Grazie e spero di ricavarci qualcosa.

come faccio far lavorare la funzione su una copia del suo parametro?


 valore.
No, le parentesi graffe non ci vogliono.
EMG

...

ma cosi' e' giusto, vero?
char miastringa[100]={'m','i','a',' ','s','t','r','i','n','g','a','\0'};
(anche se e' orribile :)
ciao
bp

 (anche se e' orribile :)
Si.
EMG
Newsgroup: it.comp.lang.c
Titolo: Programmi per lo scambio di file

E' un pň che ho la pazza idea di sviluappare un programma per trasferire 
file tipo i classico napster ma mi sono soffermato a pensare e a 
ripensare per risolvere gli innumerevoli problemi che si hanno in questi 
programmi. Il piů oneroso č la ricerca di file che impiega sempre molto 
tempo a causa del sommarsi dei vari calcoli e processi che deve subire il 
pacchetto di query per la ricerca. A questa problema si puo sopperire 
solamente sviluppando un sistema centralizzato o avere nei singoli server 
un chage di richieste e risposte ma questa seconda idea non mi allieta 
molto!!!
Per prima cosa allora userei un protocollo UPD al Posto del TCP cosě 
risparmio un nei pacchetti di connessione e recupero banda . Bigogna in 
ogni caso mettere un check sum per controllare la correttezza del 
pacchetto!Se usiamo questa tecnica ci conviene inviare le risposte 
direttamente al cliente e non rimettere i pacchetti in rete in maniera da 
congestionare le ricerche!
Per sapere che server sono online bisogna solo inserie una funzione di 
ping a cui ogni client risponde con la propia ip e l'ora del segnale.
Per identificare i computer usare un numero identificativo a 12 byte !!!
Per il download ci sto ancora pensando . Si puň fare basato su protocollo 
HTTP come fanno molti altrimenti pensavo un portocollo compresso ma non 
so che rese e con che risultati . Solo il trasferimento dei file avviente 
in tcp il testo in UPD!!!
Che ne pensate voglio commenti feedback e tutto il possibile. Se qualcuno 
č interressato all'idea cerco collaboratori!!!
GRAZIE
	<SAX>


IMHO e` inutile continuare a creare doppioni su doppioni con un paio di funzioni
in piu` o in meno.
Se vuoi lavorare su qualcosa di grosso, le comunita` di sviluppo OpenSource
AFAIK sono sempre contente di nuove persone che apportano contributi...
Un paio, solo per dare un'idea, di progetti interessanti che pero` sono ancora
molto "sperimentali"...
http://gift.sourceforge.net
http://lopster.sourceforge.net
Ovviamente tutto questo *IMHO*
Adieu,
-- 
Lestat de Lioncourt                            |             Ciro Mattia Gonano
  JabberID: 
les...@jabber.students.cs.unibo.it
 |       Undergraduate Student in
  ICQ#: 52631406                               |            Computer Science at
  URL: 
http://www.CS.UniBO.It/~gonano
          |          University of Bologna
         <powered by Linux Slackware 8.1-beta2 on Kernel 2.4.18-xfs>

congestionare le ricerche!
Mumble non vorrei dire una cavolata, ma solitamente nelle connessioni
ad internet (degli utenti normali) si utilizza solo il tcp/ip......
Vorresti far installare il protocollo UDP a tutti i client?!
NM


Quando si "installa TCP/IP" solitamenete questo include anche UDP.
In effetti dire TCP/IP e' un po' improprio ma si usa cosi'.
Alessandro.

 
beh, altrimenti, al posto di chiamarsi "TCP/IP" si chiamerebbe "TCP" e basta
:)))

Newsgroup: it.comp.lang.c
Titolo: Cosa vuol dire...

Salve a tutti  uso Win98/Rhide/Djgpp
ho scritto un programmino , uso delle variabili globali , queste sono
dichiarate
appena dopo gli #include e prima di qualsiasi funzione compreso il Main.
Quando sono  utilizzate nelle funzioni , compreso il main , sono
ridichiarate extern .
Quando compilo , Rhide mi segnala tutto OK , ma quando creo l'*.exe  , mi da
"... undefined
error" , ma che significa? why, perchè , why!
Postate pure in e-mail se volete.
Che vor di?? eh.
Chi mi aiuta?
Grazie 1000
                        Roberto

error" , ma che significa? why, perchè , why!
Un sospetto...
Sei sicuro che viene fatto anche il link del modulo che definisce
le variabili ?
HTH
Andrea
--
Andrea Griffini, Programmer
http://www.netservers.com/~agriff

 ridichiarate extern .
Se ho capito bene, tu hai fatto così:
#include <quello che te pare.h>
int variabileglobale;
int main(void)
{
    extern variabileglobale;  // <-- Se hai usato un'istruzione del genere,
                                        // hai commesso un errore
    variabileglobale++;
    return(0);
}
La parola chiave extern serve per indicare al compilatore che quella
variabile è già stata definita in un altro file.
Se definisci globalmente una variabile, ma la usi nello stesso file, non
devi mettere niente davanti ad essa, quindi utilizzarla così:
int main(void)
{
    variabileglobale++;
    return(0)
}
Ok?
Ciao ciao :-)
estr...@libero.it
estr...@tiscalinet.it
http://web.tiscalinet.it/tempo_libero/index.html

>"error  , undefined reference" perchè , why!    postate pure in casella.
Grazie 1000    Roberto


Un problema analogo (corretta compilazione ma crash
all'esecuzione) mi era capitata a suo tempo su una
macchina ULTRIX perche' tentavo di allocare (con
le variabili) piu' memoria di quanta ne avevo a
disposizione.
Non so se questo ti puo' servire...
Ciao, Maurizio
--
mber...@hotmail.com
Sent via Deja.com 
http://www.deja.com/
Before you buy.
Newsgroup: it.comp.lang.c
Titolo: time.h problemi

ciao ho un problema per gestire il tempo in c
io ho più date del tipo
char date[]="gg/mm/aaaa"
e devo fare operazioni di comparazione su queste.
il seguente programma non funziona:
################
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
    struct tm time1;
    struct tm time2;
    char data1[10]="01/04/1980";
    char data2[10]="03/03/1981";
    sscanf(data1,"%d/%d/%d",&time1.tm_mday, &time1.tm_mon,
&time1.tm_year);
    time1.tm_hour=0;
    time1.tm_sec=0;
    time1.tm_min=0;
    time1.tm_isdst=0;
    sscanf(data2,"%d/%d/%d",&time2.tm_mday, &time2.tm_mon,
&time2.tm_year);
    time2.tm_hour=0;
    time2.tm_sec=0;
    time2.tm_min=0;
    time2.tm_isdst=0;
    printf("%ld \n",mktime(&time1));
    printf("%ld \n",mktime(&time2));
    printf("%f \n",difftime(mktime(&time1), mktime(&time2)));
    printf("%f \n",difftime(mktime(&time2), mktime(&time1)));
    system("PAUSE");
    return 0;
}
##################
restituisce
-1
-1
0.0
0.0
che chiaramente non mi permette di fare operazioni
grazie

lo compilato su linux e funziona
uso il dev-cpp su winxp
perché non va?

     char data2[10]="03/03/1981";
Le stringhe di inizializzazione sono di 10 caratteri, con il byte nullo
finale sono quindi 11 byte.
Non so se questo è la causa dei tuoi problemi.
Newsgroup: it.comp.lang.c
Titolo: Sostituzione di alcune funzioni

Salve a tutti,
ho un pezzo di codice (tratto da una funzione datami da Cristiano un mesetto
fa) per l'inizializzazione dei semi di un generatore casuale che finora ha
funzionato benissimo compilata con lcc sotto win2000; ora pero' devo
portarla sotto linux e compilarla con gcc e un paio di istruzioni non posso
piu' usarle (sono "_rdtsc" e "_lrotl"), mi potreste dire con cosa
sostituirle? Il codice e':
void init_rnd(unsigned long *init_array, int array_length){
 unsigned long A=_rdtsc();
 unsigned long B=time(NULL);
 unsigned long y=A+B;
 int i, j;
 for(j=0;j<array_length;j++){
  for(i=0;i<10;i++){
   y=y*2147001325L+715136305L;
   A=_lrotl(A^B,B)+y; B=_lrotl(B^A,A)+y;}
  *(init_array+j)=A^B;
 }
}
Grazie,
Pleg

sostituirle?
Prova con:
#if defined(__i386__) || defined(__x86_64__) &&
!defined(RDTSC_AVAILABLE)
uint64 _rdtsc()
{
uint32 high, low;
__asm__ __volatile__ ("rdtsc" : "=a" (low), "=d" (high));
return ((uint64)high << 32) | low;
}
# define RDTSC_AVAILABLE
#endif
e
#define _lrotl(x, n) ((((unsigned long)(x)) << ((int) ((n) &
31))) | (((unsigned long)(x)) >> ((int) ((-(n)) & 31)))) 

Ciao, _lrotl mi sembra funzionare ma _rdtsc mi da' errore di compilazione:
"missing binary operator before token uint64", che cosa vuol dire?
Grazie,
Pleg

"missing binary operator before token uint64", che cosa vuol dire?
Non uso gcc, ne' unix, quindi mi e' difficile capire se l'errore
e' nella "#if defined" o nella mancata definizione di uint64.
Controlla se uint64 e' definito. Ad esempio cerca negli header:
stdint.h
types.h
sys/types.h
Prova a postare il problema in it.comp.os.linux.development

Ti ringrazio dell'aiuto, ho poi trovato questo con google
http://www-unix.mcs.anl.gov/~kazutomo/rdtsc.h
che mi sembra funzionare ok per me.
Pleg

 "missing binary operator before token uint64", che cosa vuol dire?
il gcc se includi il file <stdint.h> riconosce i tipi uint64_t e uint32_t.
Ma potrebbe anche essere che hai ricopiato le linee:
#if defined(__i386__) || defined(__x86_64__) &&
!defined(RDTSC_AVAILABLE)
senza aggiungere un '\' di continuazione sulla prima.
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   Registered Linux user #337974  < 
http://giovanni.homelinux.net/
 >
Newsgroup: it.comp.lang.c
Titolo: Aiuto, sono un principiante

Ciao, tra poco devo dare un esame all'uni e sono disperato. Faccio dei
programmi stupidi ma non mi funzionano. Potete aiutarmi?
per esempio:
#include <stdio.h>
char a[20];
char nemico[]="pirla";
main()
{   
 printf("Inserisci un nome: \n");
 scanf("%d", a);
 
 if (a[0] = = nemico[])
    printf("Stronzo");
      else
  printf("Ciao"); 
 
}
Cosa sbaglio? Vi prego aiutamemi
                                                                    Simone

  if (a[0] = = nemico[])
if (a[0] == nemico[])
L'operatore == non deve avere spazi tra i due segni.
EMG

a[0] "restituisce" il primo carattere inserito da tastiera e non l'intera
stringa. Quindi meglio mettere a.
nemico[] non significa nulla, scrivendo invece nemico (e basta) e'
l'indirizzo del primo carattere di tale array. Ed e' questa la forma che si
deve utilizzare.
Inoltre == non confronta due stringhe. (ma al massimo due caratteri:
a[0]==nemico[0] )
prova con strcmp o altre funzioni simili:
if (strcmp(a,nemico)==0){    /* 0 se uguale */
    /* E' uguale ... */
}
Devi ovviamente includere string.h.
Alex


 }
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
"Chi parla in tono cortese,
 ma continua a prepararsi,
 potra' andare avanti;
 chi parla in tono bellicoso
 e avanza rapidamente
 dovra' ritirarsi" Sun Tzu -- L'arte della guerra

 if (a[0] = = nemico[])
 if (strcmp(a, nemico) == 0 ) 


>E questi sarebbero programmi da universita ??????
Hai ragione :-)
Mi ricordo che anche noi facevamo caxxate simili al primo anno, ma questo
accadeva nelle lezioni di laboratorio della prima settimana !!!
Ora siamo ad aprile ed anche se il nostro amico e' iscritto al primo anno
non ha nessuan scusa ;-)
Alex
P.S. D'altronde per imparare bisogna iniziare pure da qualche cosa, ma....

L'operatore == non deve avere spazi tra i due segni.
si, ma non fa quello che xxxx crede; meglio usare strcmp
Anto
--
Antonio Cuni, 18 anni, studente
Brainbench Certification: 
Master C++: 4.6, higher than 98% of all previous test takers.
C Language: 3.32, higher than 79% of all previous test takers.
http://www.brainbench.com/transcript.jsp?pid=1301688

Newsgroup: it.comp.lang.c
Titolo: Reset con DJGPP

Esiste una funzione per questo emulatore che permette di resettare il pg?
Magari in caso negativo esiste un'altra procedura per farlo?
Grazie

> Esiste una funzione per questo emulatore che permette di resettare il pg?
Scusate, con questo Compilatore :)

Altro errore....faccio prima a ripostare :)
Esiste una funzione per questo compilatore che permette di resettare il
sistema?
Magari in caso negativo esiste un'altra procedura per farlo?
Grazie
(reduce da lunghe ore di  Ultima Online...)
Newsgroup: it.comp.lang.c
Titolo: Significato del codice ( C >Java )

vorei tradurre in Java del codice C.
per drand48(); che tipo di numero casuale si intende?
che differnza c'e' rispetto a rand();
 e poi :
if(!(j%102))    printf("\n%ld",j);   // j%102 cosa vuol dire : %
  for(t=0;t<NUMTRAIN;t++) {
   patr[t] = ecm[t] < EPSILON; // queste riga cosa significa?
   l = l && (patr[t]);                   // questa riga cosa significa?
  }
Grazie
Oxy

   l = l && (patr[t]);                   // questa riga cosa significa?
Ad 'l' assegni il risultato dell'operazione logica AND (spero tu ne
conosca la tavola di verita'), tra 'l' stesso e l'array patr di indice
t (anch'esso un booleano, come detto piu' sopra).
Operazione che faresti UGUALE in Java peraltro :)
-- 
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."

 l = l && (patr[t]);                   // questa riga cosa significa?
Anche questa è un'operazione logica equivalente a:
    if  ((l != 0) && (patr[t] != 0))
        l = 1;
L'operatore && è l'and logico e riporta come risultato 1 (true) se ambedue
le espressioni sono true.
Maurizio.

 Operazione che faresti UGUALE in Java peraltro :)
certo che si puo' fare... ma non in quel modo... cosi' non si compila.
Grazie:)

 le espressioni sono true.
Grazie 1000!:)
Ciao

certo che si puo' fare... ma non in quel modo... cosi' non si compila.
La sintassi e' legale, il problema potrebbe essere sui tipi. Ho donato
ogni libro che avessi sul Java, visto che da me prendevano solo
polvere, ma mi pare esistesse il tipo bool.
Se l e' un booleano, l'array contiene solo booleani, l'operatore && ha
senso cosi'... probabilmente a te non funziona perche' in C sono
definiti come tipi numerici (char, int o simili).
Addentrarci di piu' significa andare OT e costringermi a cercare un
libro di Java, cose che non vorrei fare :)  Spero ti basti la dritta


 definiti come tipi numerici (char, int o simili).
Infatti,  non sapevo che in C gli int possono essere booleani... in java no.
Quindi ora devo anche trovare gli int che in realta' sono booleani.
Grazie Ciao
Newsgroup: it.comp.lang.c
Titolo: Auto int

Ma è vero...
che se dichiaro una cosa di questo tipo
float x, y;
il compilatore la interpreta in questo modo?
float x;
int y;
e quindi vale la stessa cosa per
double x, y;
?
thx
Byez
B@STI

 int y;
No, non e` vero.
float x, y; == float x; float y;
Bye,
 Emmanuele.
-- 
Emmanuele Bassi (Zefram)           [ 
http://www.radiance.d2g.com/~zefram
 ]
GnuPG Key fingerprint = 4DD0 C90D 4070 F071 5738  08BD 8ECC DB8F A432 0FF4

 double x, y;
si, vale la stessa cosa

Tieni conto che il vecchio C quello K&R dava la possibilità di non definire
il tipo delle funzioni e delle variabili,nel qual caso supponeva fossero
int.Pratica quantomeno terrificante e confusionaria che ogni compilatore
moderno dovrebbe segnare come warrning o meglio come Error. Ad ogni modo un
tempo era lecito e in alcuni vecchi source puoi trovarlo!
Non esiste alcuna versione cmq che interpreti la riga
float x,y; come
float x, int y;
Ciao Wezzy

Newsgroup: it.comp.lang.c
Titolo: New Entry

Scusate ragazzi, sto cercando di entrare nel mondo del C dopo altri
linguaggi.
Che compilatore mi consigliate (possibilmente freeware)? da dove lo posso
scaricare?
Grazie 1000 per le risposte
--
                 /           /
                /' .,,,,  ./
               /';'     ,/
              / /   ,,//,`'`
             ( ,, '_,  ,,,' ``
             |    /@  ,,, ;" `
            /    .   ,''/' `,``
           /   .     ./, `,, ` ;
        ,./  .   ,-,',` ,,/''\,'
       |   /; ./,,'`,,'' |   |
       |     /   ','    /    |
        \___/'   '     |     |
          `,,'  |      /     `\
               /      |        ~\
              '       (
             :
            ; .         \--
          :   \         ;
DANY

 scaricare?
Gioverebbe sapere per che piattaforma.  Per Unix di qualunque tipo,
ftp://ftp.gnu.org/pub/gnu/gcc/gcc-2.95.2.tar.gz
 (YMMV).
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Univ. of Padova, Dept. of Physics - Padova, Italy            
lor...@pd.infn.it

 scaricare?
Cerca nelle FAQs (vedi firma) , ci sono descrizioni e link per scaricarli.
ciao
Marco
--
Marco Coppo
University Of Sheffield
FAQ del gruppo: 
http://www.programmazione.it/linguaggi/c/itcomplangc.htm


no, io uso Windows98

you wrote:

djgpp
lo trovi a 
www.delorie.com/djgpp/
utilizza il servizio zippicker molto comodo.

 scaricare?
Prendi il DJGPP su 
www.delorie.com
.
EMG

 Grazie 1000 per le risposte
C'e' anche il compilatore c++ 5.5 di borland che adesso e' freeware (solo il
compilatore a riga di comando, non tutta la suite c++builder!!) (lo trovi su
www.inprise.com
)
Ciao,
Alberto.
Newsgroup: it.comp.lang.c
Titolo: come prendere l'i-esimo bit da un intero?

vorrei prendere l'i-esimo bit in un intero: come fare
ad esempio: vorrei il terzo bit:
integer: 10100110
bit:1    (10[1]00110)
grazie in anticipo, Mario.

 Esatto! Grazie per la correzione, la prox volta sarò più completo :)
Potresti/e chiarirmi questa sottigliezza?
A quale notazione corrisponde il modo di numerare i bit scritto sopra?
L'intel 8086 quale notazione usa?
Il pentium usa la stessa?
Può dipendere anche dal compilatore?
Scusami la raffica di domande.    %-)
Grazie mille,
@less@ndro

 Tutor at D.S.I. University of Milan
V_/_ 'The future will not remember, the past doesn't forget.'
I'm Linux zion 2.4.0 #4 Thu Jan 11 15:33:34 CET 2001 i586

 [...]
Quando scriviamo un numero, che so, 256, la cifra
più significativa è quella più a sinistra.
Concordi con me che pur essendo meno "seri" (...)
gli intel & co. utilizzano un metodo più intuitivo?
Ciao,
@le
Newsgroup: it.comp.lang.c
Titolo: Help - Array di puntatori verso stringhe dichiarate dinamicamente

Ciao a tutti.
Ho necessità di leggere degli input da tastiera (stringhe), successivamente
dimensionare in maniera dinamica una variabile in cui copiare quello che ho
letto (per non sprecare memoria diciamo) e infine creare un array di
puntatori che puntano a queste stringhe, per poterle ordinare e fare altre
operazioni.
Quello che ho fatto sembra funzionare, ma al momento di leggere il contenuto
ottengo delle cose incomprensibili, non vorrei che il contenuto delle
stringhe vada perso sostituito da indirizzi di memoria o cose simili.
Ecco il codice che ho scritto, spero possiate darmi una mano..!
#include <stdio.h>
#include <stdlib.h>
void leggi_vettore_stringhe(char * a[], int n)
{
   int i = 0;
   char buffer[100];     //per leggere le stringhe senza sapere quanto
saranno lunghe
   char temp[1]; //questa è quella che poi ridimensiono a seconda di quanto
è lungo l'input da tastiera
   for (i = 0; i<n; i++){
        printf("\nInserire la stringa: ");
        gets(buffer);
    temp=realloc(temp, strlen(buffer)); // ridimensiona in funzione della
lunghezza dell'input
    temp = buffer;    // ci copia dentro l'input
    a[n] = &temp;  // qui "dovrebbe" far puntare la corrente posizione
dell'array alla stringa
   }
}
int main(int argc, char *argv[])
{
    char* a[100];
    leggi_vettore_stringhe(a,10);
    int j=0;
    for (j=0;j<10;j++){
        printf("\nn=%d --> %s",j,*a[j]);
    /* e qui il problema! non scrive le stesse cose che io ho immesso da
tastiera!!! */
    }
    system("PAUSE");
    return 0;
}
vi prego datemi una mano..
ciao e grazie

 tastiera!!! */
Nel ciclo for non c'è bisogno di usare *a[j], basta semplicemente a[j].
In ogni caso, il problema o è nell'errore su indicato o devi controllare che
ci sia la sequenza di chiusura della stringa inserita
--------------------------------
Inviato via 
http://usenet.libero.it


Io farei qualcosa tipo:
#include <stdio.h>
#include <stdlib.h>
void leggi_vettore_stringhe(char * a[], int n)
{
  int i = 0;
  char buffer[100];     //per leggere le stringhe
  for (i = 0; i<n; i++){
    printf("\nInserire la stringa: ");
    gets(buffer);
    a[i]=(char *) malloc((strlen(buffer)+1) * sizeof(char));
    strcpy(a[i], buffer);
    printf("%s\n",a[i]);
  }
}
int main(int argc, char *argv[])
{
  int j;
  char * a[100];
  leggi_vettore_stringhe(a,10);
  for (j=0;j<10;j++){
    printf("\nn=%d --> %s",j,a[j]);
  }
  for (j=0; j<10; j++) free(a[j]);
  return 0;
}
Ciao,
Ema
Newsgroup: it.comp.lang.c
Titolo: SelectObject function

 Magneti Marelli D.E. Tel:+39-11-6879-158 Fax:+39011-6879-155

Sto usando il compilatore BORLANDC C++ 4.02 sotto W95 .
SelectObject, su Windows, modifica un DC (Device Context).  Un
DC "contiene" vari oggetti grafici: penna, pennello, bitmap, ....  Con
SelectObject su di un DC, cambi uno di questi oggetti grafici: gli
metti dentro una penna diversa da quella che aveva prima, ad
esempio -- la SelectObject ti torna la handle dell'oggetto che c'era
prima (puoi salvartela localmente per reinserirla con un altro
SelectObject quando hai finito, ad esempio).  La cosa non e`
diversa per la bitmap contenuta in un device context, di quanto
non sia per la penna contenuta in quel device context: con una
SelectObject, ne inserisci una nuova e lei ti torna la handle di
quella che c'era dentro prima.
Eccezione: la SelectObject, se l'oggetto e` una bitmap, ti permette
in realta` di inserirlo, non in _qualsiasi_ device context, ma solo in
un device context che sia in grado di accettarla... in pratica, un
DC di memoria ("compatible DC") costruito con caratteristiche di
compatibilita` con un DC di tipo raster; inoltre, una bitmap non puo`
essere inserita in piu` di un DC alla volta.
BitBlt copia (parte della) bitmap inserita in un DC sorgente, in un
DC destinazione -- non e` detto che sia una semplice copia, puoi
in realta` eseguire varie operazioni particolari, ma la copia e` la
cosa piu` semplice e frequente.  Ci sono vari vincoli di compatibilita`
fra i DC destinazione e sorgente, ecc ecc.
Quindi, in pratica, riassumendo: SelectObject di una bitmap in
un DC "compatibile", seguito da una BitBlt da esso a quello con
cui e` compatibile, e` il modo canonico di "dipingere" una bitmap
su di un device context in grado di accettarla (cioe`, raster).
Alex
Newsgroup: it.comp.lang.c
Titolo: getc o fscanf

Salve a tutti,
vorrei sapere le differenze esistenti tra l'uso di getc e fscanf, in merito
a un problema di lettura file.
Usando queste poche righe mi succede che non riesco a leggere la prima cifra
del file input.txt, la salta.
Inoltre c'è un modo diverso per rilevare la fine del file invece di usare
getc?
Grazie
Daniele
main(){
FILE *input;double i,j;
input=fopen("input.txt","r");
      for ( ;  (getc(input)) != EOF  ;  ){
            fscanf (input, "%lf", &i);
            printf("Valore: %lf" , i);
      }
}

 }
In generale, si preferisce leggere un'intera riga dal file (con fgets) e
poi si effettua il parsing della stringa letta:
char buf[MAX_LINE_LEN];
while(fgets(buf), sizeof(buf), f) {
        sscanf(buf, "%lf", &i);
        ...
}
In casi semplici non cambia molto, ma se l'input e` un po' piu`
complesso risulta decisamente piu` comodo.
Luca
-- 
Home: 
http://kronoz.cjb.net
Un apostolo vedendo Gesu` camminare sulle acque:
- Cazzo se e` buono 'sto fumo!!!

Per verificare la fine del file usa while(!(feof(myFile)))
EOF viene restituito anche in caso di errore quindi tu nel caso nn sai mai
se sei arrivato alla fine o no

Vi ringrazio tutti per gli aiuti, mi sono stati utili.
Per capire meglio come funziona la lettura da file, vorrei sapere se la
fscanf cosě come tutti gli altri comandi, usano gli spazi per separare le
parole/caratteri/numeri o se si puň decidere di usare anche altri caratteri
da usare come separatori.
Grazie di nuovo
Daniele