mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c
Titolo: Problema con i socket

Ciao a tutti,
sto scrivendo un'applicazione che mi permetta di scambiare messaggi
tra un client e un server (per il momento, poi dovrò scambiare file).
Ho realizzato 2 semplici programmi di test:
  - un server che accetta le richiesta dal client e riceve un
messaggio
  - un client che si collega al server e spedisce un messaggio
fin qui tutto ok.
Quando provo ad implementare la risposta del server, e cioè a fare una
cosa del genere:
SERVER:
read...
stampa messaggio ricevuto
write...
CLIENT
write...
read...
stampa messaggio ricevuto
sembra che il tutto vada in stallo. Se killo il client il server
termina
la sua esecuzione stampando effettivamente il messaggio ricevuto,
quindi
sembra che entrambi i processi si blocchino sulle read.
Sapete darmi qualche consiglio?
Grazie!
Simo

 Simo
Posta il codice :D
Cosï¿œ a lume di naso: le read sono bloccanti, tu come ti assicuri che un 
messaggio sia terminato? non ï¿œ che leggi in un ciclo while?

 messaggio sia terminato? non è che leggi in un ciclo while?
Grazie per la risposta!
Leggo in un ciclo while:
	string retVal="";
	int l = 1;
	char msg[BUFFERSIZE];
	do
	{
		printf("*");
		l = read(sd, msg, BUFFERSIZE - 1);
		if (l<=0)
		{
			if (l<0)
				perror("Read error");
			break;
		}
		msg[l] = 0;
		retVal+=msg;
	}while(l>0);
Per intercettare la fine del messaggio leggo fino a che trovo dati
(l>0)
Per inviare invece uso semplicemente la write:
      char* msg="Hello!\0";
      write(sd, msg, strlen(msg));

       write(sd, msg, strlen(msg));
lo '\0' ï¿œ messo in automatico, serve solo se ti costruisci la stringa a 
manina (ma ci siamo passati tutti =) - per esempio quello che facevi 
prima con la variabile msg, lï¿œ era obbligatorio.

 prima con la variabile msg, lï¿œ era obbligatorio.
azz... questo lo DOVEVO sapere :-(
Grazie ancora!!!
Simo

 (l>0)
A socket chiuso viene ritornato 0, per cui
if(0 >= l)
{
    ............
     break;
}
brix

 Simo
Di nulla, figurati
Lorenzo
Newsgroup: it.comp.lang.c
Titolo: const e define...vediamo se ho capito....

da quanto ho potuto capire sulla dichiarazione di costanti, ci sono due modi
per farlo:
const e define.
solo non credo di aver capito bene quello che succede a livello di
compilazione...
la differenza tra const e la dichiarazione normale  è che in fase di
compilazione al posto della variabile const viene sostituito il suo valore,
ma la stessa può ancora essere modificata, giusto?
con define non è difficile capire che non può essere modificata, ma che allo
stesso modo di const nel codice eseguibile viene messo il suo valore
simbolico invece della variabile.
ho capito giusto?
se ho capito giusto, di che utilità e const?
Raffaele


Saluti
Rosario Ianuale

 Rosario Ianuale
gratias!
Raffaele


dunque
se definisci una variabile CONST
il compilatore crea una variabile ed assegna alla stessa il valore assegnato
da CONST
quindi nel programma exe avrai una zona di memoria contenente il valore
CONST e un puntatore a tale zona che è una variabile.
con define il precompilatore sostituirà in tutti i punti del programma che
utilizzano la definizione indicata il risultato del calcolo o dei valori
inseriti in define
quindi nel programma exe troverai una zona di memoria contenente il
risultato delle operazioni definite per quante volte tale definizione è
stata utilizzata.
fai una prova
compila una programmino semplice semplice utilizzando sia CONST che define
ma non una volta sola ma molte volte poi vallo a guardare con ultraedit o
hexedit e vedi come il compilatore utilizza il posizionamento dei buffer
corrispondenti.
se non ci sbatti la testa difficilmente riuscirai a comprendere il
funzionamento.

 errore.....
Lo standard dice che e' undefined behavior, il comportamento dipende
dal compilatore.
Alcuni accettano la modifica ma danno un warning in fase di compilazione,
altri danno errore.
C:\>iao Angelo
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it
Newsgroup: it.comp.lang.c
Titolo: Sorgente per scansione di una Directory

Ciao,
sono alla ricerca di un esempio di sorgente per realizzare una funzione
di ricerca di files in una precisa directory in modo da processare i
files contenuti in modo "batch".
Un grazie a chi mi puņ aiutare!
Andrea
--
Posted from 
laguna.tiscalinet.it
 [195.130.224.86]
via Mailgate.ORG Server - 
http://www.mailgate.org

 files contenuti in modo "batch".
Devi cercare, nella documentazione del tuo compilatore, funzioni tipo
findfirst()/findnext() che comunque non sono standard.
EMG

files contenuti in modo "batch".
/* filelog.c            */
/* x DJGPP              */
/* Andrea Laforgia 1999 */
#include <stdio.h>
#include <dos.h>
#include <dir.h>
static unsigned dir_level = 0 ;
static unsigned dir_count = 0 ;
int is_valid_directory( struct find_t dir_info )
{
    return ( ( dir_info.attrib & _A_SUBDIR ) &&
 
dir_info.name
[0] != '.' ) ;
}
void scan_tree( const char * dir )
{
     struct find_t dir_info ;
     unsigned result ;
     char buffer [MAXPATH] ;
     chdir( dir ) ;
     getcwd( buffer, MAXPATH ) ;
     ++dir_level ;
     ++dir_count ;
     result = _dos_findfirst( "*.*", _A_SUBDIR, &dir_info ) ;
     while ( ! result )
     {
           if ( is_valid_directory( dir_info ) )
              scan_tree( 
dir_info.name
 ) ;
           else
           if ( 
dir_info.name
[0] != '.' )
           {
              printf( "%s/%s\n", buffer, 
dir_info.name
 ) ;
           }
           result = _dos_findnext( &dir_info ) ;
     }
     if ( --dir_level ) chdir( ".." ) ;
}
int main( void )
{
   char buffer [MAXPATH] ;
   getcwd( buffer, MAXPATH ) ;
   scan_tree ( "\\" ) ;
   chdir( buffer ) ;
   return 0 ;
}
--
Andrea Laforgia
andrea_...@bigfoot.com

 /* Andrea Laforgia 1999 */
--
Posted from 
twingo.tiscalinet.it
 [195.130.224.85]


 
andrea_...@bigfoot.com
Sono molto interessato a questo programma ,tuttavia non riesco a compilarlo
perchč mi vengono segnalati molteplici errori(ad esempio struttura
indefinita)
.Dipendono dal mio compilatore?coasa devo fare?
Vi ringrazio per qualsiasi suggerimento.  by Marco_
Newsgroup: it.comp.lang.c
Titolo: [Objective-C ] materiale e info

Salve a tutti , qualcuno mi sa dire qualche cosa sul
linguaggio Objective-C ?
Che differenze ha con il C e C++??
Grazie a tutti
Ciao

Salve a tutti , qualcuno mi sa dire qualche cosa sul
linguaggio Objective-C ?
Che differenze ha con il C e C++,
materiale interessante da leggere?
Grazie a tutti
Ciao

Newsgroup: it.comp.lang.c
Titolo: vuoi fare una montagna di soldi?leggi qui

se vuoi fare una barcata di soldi leggi questo messaggio fino alla
fine.Con una spesa iniziale di soli 10 euro puoi fare milioni di euro
in poche settimane.Devi  mandare 2 euro ad ognuno dei 5 indirizzi che
trovi in questo messaggio.fatto ciò sposta su di una posizione gli
indirizzi della graduatoria,così facendo togli il primo e tu inserisci
il tuo alla fine della lista.Dopo aver fatto anche questo carica il
nuovo messaggio in almeno 300 newsgroup.
Questi gli indirizzi:1°Emanuele Faraci Via Cacciaguerra 50 Cesena(Fo)
cap 47023;2°Paolo Faresin Via Collebeato 40 Brescia cap 25127;3°Marco
Angeletti Via dei Massoni 4/15 Trespiano(Fi) cap 50010;Corvasce
Claudia  Via G. Reni 63 Torino cap 10136;Ferrara Mirko Via Guido Reni
79 Torino cap 10137.
Adesso perchè funziona:tutto ciò crea uno schema ad albero capovolto
con migliaia di rami, chiunque sotto di te continuerà a inviare soldi
perchè vuole arricchirsi e così via.Cominceranno ad arrivarti i soldi
nel giro di una settimana da quando hai pubblicato gli indirizzi e
ogni settimana i tuoi guadagni si moltiplicano.
Ti assicuro che è un metodo provato ti basti pensare che mi sono
comprato una Porsche Boxster nuova rd una casa al mare in Sardegna.

 comprato una Porsche Boxster nuova rd una casa al mare in Sardegna.
Visto che _TI_ sei comprato la Porsche e la casa in Sardegna e che
hai gia' pubblicato il tuo indirizzo, non avrai grosse difficolta'
a mandarmi una scannerizzazione dei relativi attestati di proprieta'.
L'indirizzo di e-mail e' buono.
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 sempre incinta"
Mmmh... Forse non hai capito il suo problema.
Si tratta di implementare un algoritmo scritto in C che inseriti i cinque
nomi riportati nella mail indichi il grado di ingenuità dei medesimi.
Anche perchè un paio sembra che esistano veramente :)
Ciao,
Paolo PAL
P.S. Non dovremmo rispondere allo spam...

> P.S. Non dovremmo rispondere allo spam...
ma le barzellette passano sotto la voce spam??
ogni tanto 2 risate fanno bene :D

 nomi riportati nella mail indichi il grado di ingenuità dei medesimi.
Mah...bisognerebbe implementare nuove librerie per numeri giganteschi.
:)


ah io glieli mando :fagiano:
lol

 nel giro di una settimana
Insieme a qualche segnalazione alla polizia postale lol

 P.S. Non dovremmo rispondere allo spam...
Si, speravo mi rispondesse in privato: ho avuto delle discussioni
con certi soggetti... Roba da far venire il dubbio che siano degli
homo sapiens (soprattutto per quanto riguarda il "sapiens") :-)

Newsgroup: it.comp.lang.c
Titolo: Chiamata di funzione

Ho una funzione
void funzione(int x, int y);
Una varibile di tipo void* cosě definita:
void *ptrFunzione = funzione;
Come faccio a chiamare la funzione servendomi del solo puntatore? Mi sembra
che esisteva una funzione nelle librerie standard del C del tipo:
call(ptrFunzione)
Qualcuno sa aiutarmi?
Kaos.


Dovresti fare cosě se non sbaglio :
(*ptrFunzione)(x, y);
Ciao

 Ciao
Mi correggo:
void Funzione ( int x, int y )
{
	printf("%d \n", x + y );
}
void main()
{
	int x = 2, y = 3;
	void (*pFunzione)(int, int);
	*pFunzione = Funzione;
	(*pFunzione)(x,y);
}

 ha scritto nel messaggio
news:lWIfe.874602$b5.38...@news3.tin.it...


 Come faccio a chiamare la funzione servendomi del solo puntatore?
#include <stdio.h>
#include <stdlib.h>
void pippo(int x)
{
     printf("(pippo) x = %d\n", x); 
}
void paperino(int y)
{
     printf("(paperino) y = %d\n", y); 
}
int main()
{  
    void (*p)() = pippo;
 
    p(3);  
 
    p = paperino;
 
    p(2); 
 
    return 0;
}
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 void *ptrFunzione = funzione;
  void (*p) (int, int) = funzione;
  p(2,3);
 
-- 
Horst

 }

 
Luca

   p(2,3);
Ke figata :)°°°
-- 
Quando noi ignoranti eravamo di più, tutto era più bello...
(A. Celentano)
Per rispondermi in privato, prima togli l'immondizia dalla testa.
Newsgroup: it.comp.lang.c
Titolo: Consorzio Net.t.un.o. - Ingegneria Informatica

Salve a tutti, e scusate se non mi sono presentato prima di postare, ma
avrei bisogno di qualcuno che sia iscritto alla facoltà di Ingegneria
Informatica tramite il consorzio Net.t.un.o.
Ho l'esame tra pochissimo, e dovrei fare delle domande... grazie in anticipo
a chi leggerà questo post, ed ancor di+ a chi mi risponderà. Ah, e
complimenti a tutti per i vostri post: dovete essere degli ingegneri coi
controcaxxi!!
Saturn

Niente, eh? Se vede che m'o merito!!
Newsgroup: it.comp.lang.c
Titolo: Deallocare una matrice

Se scrivo una funzione cosě:
void freeMatrix(long **M, int n) {
/*
    La funzione riceve in ingresso una matrice e la sua dimensione e la
dealloca
*/
  int i;
  for(i=0; i<n; i++)
    free(M[i]);
  free(M);
}
E la chiamo freeMatrix(matrice, dim)
Questa viene deallocata?
Grazie


Ipotizzando che la matrice sia stata allocata in un modo simile (ometto 
per brevita` i controlli sugli errori):
     long **allocMatrix(int x, int y)
     {
         long **M;
         int i;
         M = malloc(x * sizeof M[0]);
         for (i = 0; i < x; i++)
             M[i] = malloc(y * sizeof M[0][0]);
         return M;
     }
...allora si`.
-- 
Enrico `Trippo' Porreca

 ha scritto nel messaggio
news:40D1EE78...@people.it...

Si, nel mai ho dichiarato il puntatore come:
long **matrice;
poi ho chimato una funzione che tra le tante cose alloca la matrice e la
restituisce in output:
matrice=funzione(matrice ........)
quindi per deallocarla invoco la funzione scritta sopra:
freeMatrix(matrice, dim)
Basta questo vero?
Oppure devo passare la matrice per riferimento, oppure far restituire il
puntatore tipo:
void freeMatrix(long * **M, int n) {
 /*
     La funzione riceve in ingresso una matrice e la sua dimensione e la
 dealloca
 */
    int i;
   for(i=0; i<n; i++)
        free(*M[i]);
   free(*M);
 }
ed inocarla cosě:
freeMatrix(&matrice, dim)
oppure:
long ** freeMatrix(long **M, int n) {
 /*
     La funzione riceve in ingresso una matrice e la sua dimensione e la
 dealloca
 */
    int i;
   for(i=0; i<n; i++)
        free(M[i]);
   free(M);
  return M
 }
ed invocarla:
matrice=freeMatrix(matrice, dim)
Grazie

 matrice=freeMatrix(matrice, dim)
Questo invece e` sbagliato, perche` stai restituendo e assegnando (in 
generale, stai usando il valore di) un puntatore che punta a qualcosa 
che non esiste piu`. Probabilmente non crea problemi con un compilatore 
"reale", ma ai sensi dello standard e` illecito (ad esempio potrebbe 
esserci un controllo hardware dei puntatori che puntano fuori dallo 
spazio di indirizzamento riservato al processo, e questo hardware 
potrebbe avere licenza di uccidere. Poco probabile forse, ma lo standard 
lo permetterebbe).
In conclusione, la versione che avevi postato nel primo messaggio e` 
quella buona.
-- 
Enrico `Trippo' Porreca


GRAZIE :-))

Newsgroup: it.comp.lang.c
Titolo: Compilatore ne ho bisogno :-(

Hello Word .....L'output del mio primo programma!!
Avrei bisogno di un Borland C gratis.
Chiedo troppo spero di no!
Saluti IppoPippo

 Chiedo troppo spero di no!
Sarebbe illegale.  Usa qualcosa che e` libero (free) come i gnu tools
della cygnus (ammesso che usi windoze..)
Ciao,
-- 
David Welton                          
http://www.efn.org/~davidw
 
	Debian GNU/Linux - 
www.debian.org
Newsgroup: it.comp.lang.c
Titolo: quasi una pila iso/osi

avete presente la pila iso/osi?
Ebbene io devo fare una cosa piu' o meno simile: ho solo tre livelli di
cui quello centrale puo' non esserci, e devo implementare il tutto come
moduli del kernel linux.
La mia idea era scrivere un modulo per ogni livello, ma come posso fare
a trattare il caso in cui il livello centrale manca?
ciao
-- 
Massimiliano Cialdi
cia...@control.dsi.unifi.it
cia...@firenze.net
cia...@geoide.it

a trattare il caso in cui il livello centrale manca?
Non ho capito, cmq puoi fare un modulo dummy che non faccia altro che il
passacarte. 
-- 
"You have to take care of each other. You have to be strong.
[...] Be brave. Live...for me."

avete presente la pila iso/osi?
Cos'č una pila iso/osi?


http://www.google.com
 ?
Ciao, Andrea
-- 
Andrea Carosi, just another Debian user
Veri test tra Sistemi Operativi:
http://www.everything2.com/index.pl?node_id=602613

Newsgroup: it.comp.lang.c
Titolo: Etichetta floppy

Come faccio a leggere e/o impostare l'etichetta di un floppy?
Esiste una qualche funzione in C che si appoggia al bios ? O anche
utilizzando direttamente la int86() ?
Non vorrei utilizzare un richiamo alla system().
Grazie mille...

Te lo appoggio!
Mike

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

Che ne pensate di queste lib?

Che ne pensate di queste lib?
io direi che sei OT ;)
-- 
Rhymes
rhy...@NOSPAMmyself.com


bene.
[F/up impostato]
Adieu,
-- 
Lestat de Lioncourt  -- a.k.a --  Ciro Mattia Gonano
 Undergraduate student in Computer Science at University of Bologna
 IHGGer #1049   <=>  ICQ#: 52631406   <=>   URL: 
http://www.CS.UniBO.It/~gonano
 Debian admin at 
Students.CS.UniBO.It
 <=> look at headers for my JabberID & GPG

 Che ne pensate di queste lib?
a me piacciono.

 ha scritto nel messaggio
news:pan.2003.03.08....@nospam.vi.it...


E sono portabili?
Praticamente no. In Win le GTK sono rimaste alla versione 1.2 mi
sembra e non supportano nemmeno tutti i widget. Se vuoi la portabilità
usa le wxWindows oppure QT
-- 
Rhymes
rhy...@NOSPAMmyself.com

 usa le wxWindows oppure QT
sono migliorate un po'. Sono alla 1.3
http://www.gimp.org/~tml/gimp/win32/
e poi le qt a me non piacciono :-)

e poi le qt a me non piacciono :-)
A me piacciono entrambe :P
-- 
Rhymes
rhy...@NOSPAMmyself.com

 A me piacciono entrambe :P
hanno una licenza un po' pastrocchiata.

hanno una licenza un po' pastrocchiata.
Beh su Linux sono free, su Win un pò meno :)
-- 
Rhymes
rhy...@NOSPAMmyself.com

 usa le wxWindows oppure QT
No, le GTK sono state portate anche nella release 2.0.9 (se non già
nella 2.2.1), e funzionano correttamente.
Ciao,
 Emmanuele.
-- 
Emmanuele Bassi (Zefram)              [ 
http://digilander.iol.it/ebassi/
 ]
GnuPG Key fingerprint = 4DD0 C90D 4070 F071 5738  08BD 8ECC DB8F A432 0FF4

 Beh su Linux sono free, su Win un pò meno :)
eh, ma se lui cerca la portabilità questa è una mezza rogna.
Newsgroup: it.comp.lang.c
Titolo: c microchip

Ho una variabile char e voglio convertirla in unsigned char.
Ho provato con (unsigned char)variabile ma quando la sommo con un'altra
variabile uguale mi accorgo che non è stata convertita.
Esempio:
unsigned int a;
char b,c;
se b=255 e c=127
a=(unsigned char)b+(unsigned char)c=0 e non 382
Grazie
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Grazie
Notevole, questo codice a me non da problemi (restituisce
382...).
Che compilatore hai?
SiMoStro

 Grazie
ciao,
Nids
ps: comunque se risponderai alle seguenti domande ti potro' aiutare meglio:
    che compilatore usi?
    che processore usi?
    hai un manuale del tuo compilatore?
    se si, che ci sta scritto riguardo al tipo dei char?



Sto usando il compilatore della microchip che compila software per
microcontrollori microchip, niente a che fare con il PC. Come uC uso il
18Fxxx.
Essendo il processore un microcontrollore molto diverso da un normale
pentium, il c è leggermente diverso e mi sa che questa sia una delle
differenze.
Farò delle altre prove!


Newsgroup: it.comp.lang.c
Titolo: ricavare il nome di un file

ciao a tutti,
qualcuno mi può consigliare come realizzare semplicemente una funzione che
dato il puntatore ad un nome file (che può o meno includere il path), ne
restituisca quello privo dell'eventuale path.
grazie

 grazie
ciao
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG



Analizzi la stringa a partire da strlen(stringa) - 1, cioè dall'ultimo
carattere e la percorri fino a trovare un "\" (windows e dos), ":"
(mac e divisione fra drive e directory in windows/dos), "/" (unix e
anche windows). A questo punto  ritorni il puntatore  alla posizione
immediatamente successiva. (Attento che il separatore potrebbe non
esserci.)
-- 
Marco Barisione (ICQ 84277092)
Newsgroup: it.comp.lang.c
Titolo: Errore linker ld

sto tentando di compilare un programma con MinGW e le
librerie conio2 e libconio.a [che ho trovato sul sito conio di sourceforge]
con queste istruzioni:
mingw32-gcc.exe  -o  miofile.exe 
iofile.c -LC:/MinGW/lib/gcc/mingw32/4.4.1/  -lconio.a
C:\MinGW\bin>C:\MinGW\bin\mingw32-gcc.exe  -o miofile.exe 
miofile.c -LC:/MinGW/lib/g
cc/mingw32/4.4.1/ -lC:/MinGW/lib/gcc/mingw32/4.4.1/libconio.a
ma compare questo errore
c:/mingw/bin/../lib/gcc/mingw32/4.4.1/../../../../mingw32/bin/ld.exe: cannot 
fin
d -lC:/MinGW/lib/gcc/mingw32/4.4.1/libconio.a
collect2: ld returned 1 exit status
dove sbaglio? che tipo di errore e questo?
Vi ringrazio
Saluti

news.tiscali ha scritto:
 > C:\MinGW\bin>C:\MinGW\bin\mingw32-gcc.exe  -o miofile.exe
 > miofile.c -LC:/MinGW/lib/g
 > cc/mingw32/4.4.1/ -lC:/MinGW/lib/gcc/mingw32/4.4.1/libconio.a
prova con
-lconio
invece di -lpercorsocompletoalfile.
E.


ho provato anche in quest modo. Da quello che ho letto con: -lconio.a
indica  la lib con: -LC:/MinGW/lib/ indica il percorso.
Ho provato compare lo stesso erorre. Il file.h lo messo
in C:\MinGW\include, la lib in C:\MinGW\lib.
Ho guardato un'p� di docs, ho salvato gli stessi file anche in
C:\MinGW\lib\gcc\mingw32\4.4.1\include
Altre idee?
Ciao

questo e il link trovato sul sito MinGW:
http://www.mingw.org/wiki/Specify_the_libraries_for_the_linker_to_use
spiega come linkare le lib.
Ciao


ho risolto!
Ciao

 e come? Sai, potrebbe essere utile ad altri in futuro..
aspettavo che qualcuno chiedesse.
ho memorizzato la libreria conio in:
C:\MinGW\mingw32\lib\libconio.a
prima la avevo salvata in: C:\MinGW\lib
ma forse per le librerie esterne MinGW le vuole trovare
in quella cartella.
il file.h conio2.h invece si trova in:  C:\MinGW\include
per utilizzare questa lib:
C:\MinGW\bin\mingw32-gcc.exe -o my.exe my.c -LC:\MinGW\mingw32\lib -lconio
sono stato chiaro?
Ciao

un altra cosa, ho scritto un programma in C. Vorrei sapere
se e possibile associare una icona a scelta al programma.
Vi ringrazio
Saluti

 programma.
Solo se è una icona ANSI.

 Solo se � una icona ANSI.
...puoi spiegare?
Ciao

 ...puoi spiegare?
E' la stanchezza.

 Solo se � una icona ANSI.
anvedi?
ansi!
-- 
-riko

Newsgroup: it.comp.lang.c
Titolo: iniziare a programmare

vorrei un consiglio per cominciare a programmare in c ++ cosa mi
consigliate che manuale
qualcosa per cominciare.
:-)

...


qualcosa per cominciare.
"C++ Primer 3d Edition", Lippman e Lajoie, Addison Wesley.
Come compilatore, suggerisco egcs 1.1, che ha il grande
vantaggio di essere gratuitamente scaricabile dalla rete (e'
la versione corrente di gcc della Free Software Foundation)
e ragionevolmente aggiornato/aderente allo standard.  A
seconda del sistema operativo che usi, troverai puntatori
appropriati su 
www.cygnus.com
.
Alex
Newsgroup: it.comp.lang.c
Titolo: &=, cast

Siano s1, ..., s4 e ptr puntatori. Come correggereste
"s1->s2->s3->s4->ptr |= 1;" ?
Kiuhnm

 "s1->s2->s3->s4->ptr |= 1;" ?
Quesito con la susi?

 "s1->s2->s3->s4->ptr |= 1;" ?
Manca un' informazione cruciale: puntatori a che ? puntatore e basta non 
dice niente. In C ci sono puntatori a float, a function, ad array, a 
puntatori... ma non ci sono puntatori e basta. Dopo di che, puoi fare 
contento il compilatore facendo un cast di 1 allo syesso tipo puntatore 
di ptr. Se questo sia anche semanticamente corretto, dipende da cosa 
devi fare col risultato dell'  assegnazione...
Giorgio

 devi fare col risultato dell'  assegnazione...
Sicuro? Fai una prova...
Kiuhnm

 "s1->s2->s3->s4->ptr |= 1;" ?
 
Sintaxis GCC:
(unsigned)s1->s2->s3->s4->ptr |= 1;
Qual'è l'intenzione ?
-- 
Horst

 Qual'è l'intenzione ?
A me dice "left operand must be l-value".
E' un bug del VC?
Kiuhnm

Il 30/03/2005, Kiuhnm ha detto :

Un operatore logico su un puntatore ?
int main(int argc, char* argv[])
{
	struct S {
		struct S *s;
		int *ptr;
	 } *s;
	int i = 2;
	s = (struct S *)malloc(sizeof(struct S));
	s->s = (struct S *)malloc(sizeof(struct S));
	s->s->s = (struct S *)malloc(sizeof(struct S));
	s->s->s->ptr = &i;
	*s->s->s->ptr |= 1;
	printf("\n%d", i);
	getch();
	return 0;
}

Kiuhnm ha scritto:

Come cavolo fa a "fare una prova" se prima non rispondi alle sue domande!?
Senza le informazioni che ti ha chiesto Giorgio, la tua domanda è puro
non-sense.
--
Cingar
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 non-sense.
Viva la capacità di astrazione.
Kiuhnm

     *s->s->s->ptr |= 1;
Vedi post iniziale.
Kiuhnm

Kiuhnm <kiuh...@yahoo.it.invalid> wrote:

No. 
(unsigned)s1->s2->s3->s4->ptr |= 1;
è "GNU-C" ;-)
*(unsigned *)&s1->s2->s3->s4->ptr |= 1;
se sizeof ptr == sizeof (unsigned) e se l'espressione
s1->s2->s3->s4->ptr è una l-value
Ouaaahhh....
-- 
Horst


Cosa c' entra l' astrazione. Un programma C serve a comunicare in modo 
il meno ambiguo possibile, non a fare indovinelli. I cast a puntatore di 
qualche tipo non si possono inventare e senza sapere il tipo di ptr c'e' 
poco da astrarre.
Giorgio

 Ouaaahhh....
Giusto, non avevo pensato a questo espediente. Bravo.
Aggiungo che se siamo in little-endian la prima condizione non serve ;)
Kiuhnm

Kiuhnm ci ha detto :

Allora non ho capito il senso della domanda.
Newsgroup: it.comp.lang.c
Titolo: Utilizzo di strstr()

 
Salve
 
St� provando ad utilizzare la funzi�ne strstr(), per trovare dei token
anche identici, presenti in una stringa.
 
Ho trovato degli esempi in rete, ma ho notato che trova solo 1 token, e non
trova il secondo che e uguale al primo!
 
char *yourText = "213 File status 550 Access Denied. 550 Access Denied.";
 
char *found = strstr(yourText, "550 Access Denied");
 
printf("STEP1=%s\n",found);
 
if(found != NULL && strstr(found+1, "550 Access
Denied"))printf("STEP2=%s\n",found);
 
Nello step2, dovr�bbe essere solo visualizzato: 550 Access Denied.?
 
Allora, strstr(), serve solo per trovare un token, �ppure e possibile
trovare anche un secondo token?
 
Ciao
 
 
 
 
 
 
 
 
 
 
 
 
 

 trovare anche un secondo token?
 
A riguardo la descrizione di strstr() dal manuale mi sembra chiarissima, 
la prima frase della descrizione è
"The strstr() function locates the first occurrence of the 
null-terminated string s2 in the null-terminated string s1"
 
Ovviamente è possibile trovare tutti le altre sottostringhe, ti sposti 
avanti nella stringa da cercare e cerchi di nuovo la prima sottostringa 
e d'altronde tu stesso hai fatto proprio così nel codice, il solo fatto 
di avere due stringhe in uscita vuol dire che ha trovato anche il 
secondo "token".

A m� pare sia sempre il primo token.
 
Perche parte sempre dalla st�ssa posizione.
 
con un printf("%d\n",found-yourText+1); sia dopo il primo step, che il
secondo, il risultato sia sempre lo stesso numero: 17.
 
Ciao
 
 
 
 

 Nello step2, dovr�bbe essere solo visualizzato: 550 Access Denied.?
 
No, perche il valore di found NON cambia durante la seconda chiamata
a strstr. Prova con:
 
if(found!=NULL)
{
  found = strstr(found+1, ....)
  if (found !=NULL)
    printf(...)
}
 
 
ciao
Giacomo


 
In effetti si, serve per trovare la prima occorrenza e basta
Per trovare altre occorrenze occorre incrementare il puntatore ricevuto 
in uscita della lunghezza della stringa cercata e ripetere il ciclo
fino a quando non si ottiene NULL
 
 
 

 
Oppure m�ttendo a null il puntatore, e passandogli una nuova
sottostringa/token da cercare.
 
 
Ciao
 
 
 
 

 Oppure méttendo 
 
E qua la lancetta del trollometro sfonda il pernetto di sicurezza del 
fondo scala.
 
 
"Non incrociate i flussi, sarebbe male" (cit.)


 
Non credo che la tua risposta abbia senso rispetto al problema sollevato
 


 
dal film "Trollbusters" (1984),
sottotitolo: "Mèttiamo l'accentò ùn po dovè capìta"
 
-- 
Vincenzo Mercuri

 "Non incrociate i flussi, sarebbe male" (cit.)
 
"Faccio sempre confusione tra bene e male: che intendi con male?" 
 
(scusate l'OT, ma non riesco a resistere... :)
 
ciao
Giacomo
Newsgroup: it.comp.lang.c
Titolo: semi OT: non so a chi chiedere :p

Domanda pertinente al NG:
posso usare l'Opengl in un programma in c relativamente semplice che giri
sotto win ?
Magari per evitare di fare l'interfaccia?
Se sì, dove trovo le librerie da includere nel compilatore?
Su 
www.opengl.org
 non le ho trovate.
Grazie
Claudio

Su 
www.opengl.org
 non le ho trovate.
Che compilatore hai ?
ciao, acc.   
a...@libero.it

 Che compilatore hai ?
Visual C++
Ciao e grazie
Claudio

Visual C++
Se non hai bisogno di implementare un'interfaccia grafica, puoi
utilizzare al minimo le API di win, del resto molti programmi OpenGL
sono fatti cosi'. Comunque le API servono lo stesso, come minimo devi
"creare" una finestra, dovrai quindi "includere" la windows.h.
Le librerie OpenGL sono fornite assieme al VC++, percio' non
dovrebbero esserci problemi, nell'help dovresti anche trovare un
"reference" alle funzioni OpenGL, al limite puoi cercare sul sito
della SGI.
Sul sito OpenGL puoi trovare parecchi esempi, che dovrebbero
funzionare senza modifiche sul VC++.
NB: Per invocare le funzioni OpenGL in VC++ esistono due modi, quello
classico C-Style (usato dalla maggior parte dei programmi) e quello
OOP serve un apposito wrapper che credo sia fornito col VC++ (io uso
il Borland), al limite cerca sul sito di M$ o su MSDN.
PS: Dai un'occhiata alle librerie GLU, ti faranno comodo per creare un
minimo di interfaccia senza dover studiare le API di win.
ciao, acc.   
a...@libero.it

Grazie dei consigli
Claudio

Grazie dei consigli
Claudio

Newsgroup: it.comp.lang.c
Titolo: Compilazione con errore

Come mai ricevo come risultato della compilazione di un semplice prg questa
risposta:
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
Error E2075: Incorrect configuration file option:
Ic:\Programmi\Borland\Bcc55\include
Procedura completata con codice di uscita 1
Ho controllato,e nella cartella dell'installazione è presente la cartella
"include" con tutti i suoi file(tra cui lo stdio.h che mi serve)".Ho
riguardato anche nella cartella bin ed i due file "bcc32.cfg"(con dentro
I"c:\Programmi\Borland\Bcc55\include"
L"c:\Programmi\Borland\Bcc55\lib" )
 e "ilink32.cfg" (contenente
L"C:\Programmi\Borland\Bcc55\lib" )
sono presenti e corretti.Com'è che il compilatore non la vede?
Grazie



 Grazie
Solitamente le opzioni sono precedute dal segno -. Cosě:
-I"c:\Programmi\Borland\Bcc55\include"
-L"c:\Programmi\Borland\Bcc55\lib"
-L"C:\Programmi\Borland\Bcc55\lib" 
Inoltre devi toglere le parentesi finali alla opzione -L
HTH
Newsgroup: it.comp.lang.c
Titolo: URGENTE per chi conosce C e Pascal

Vi prego di rispondermi il piů presto possibile visto che domani ho un
benedetto esame di programazzione. Il problema č il seguente:
Definita una seguente struttura in Pascal:
type lista=^stato;
           stato = record
                         nome:string[20];
                         superficie:real;
                         popolazione:real;
                         next:lista;
             end;
Qual č l'equivalente struttura in linguaggio C???????????
Inoltre dato il seguente esercizio:
SI SCRIVA UNA PROCEDURA O UNA FUNZIONE CHE, DATI IL PUNTATORE ALLA TESTA DI
UNA LISTA DI STATI ED UN INTERO N RESTITUISCA IL NUMERO DI STATI TALI CHE IL
RAPPORTO POPOLAZIONE/SUPERFICIE E' MAGGIORE DI N.
In PASCAL ho scritto:
procedure POP(N.integer,var L:lista,var conta:integer);
var k:real
begin
    conta:=0;
    while(L<>nil) do
    begin
          k:=L^.popolazione/L^.superficie;
          if N<K then conta:=conta+1;
          L:=L^.next
    end;
end;
Qual č l'analogo in C?
Vii prego aiutatemi sono molto disperata, ho l'esame domani pomeriggio alle
16:00, fatemi sapere qualcosa entro (massimo) domani mattina.

benedetto esame di programazzione. Il problema č il seguente:
L'analogo in C č pressapoco cosě:
typedef struct stato{
    char nome[20];
    float superficie;
    float popolazione;
    struct stato *next;
} *lista;
int POP(int N, lista L)
{
    float K;
    int conta = 0;
    while(L != NULL){
        k = L->popolazione / L->superficie;
        if(N<K) conta++;
        L = L->next;
    }
    return conta;
}
Dal main poi devi richiamare cosě la funzione (in C non ci sono
procedure):
risultato = POP(mia_lista, numero);
Newsgroup: it.comp.lang.c
Titolo: Errore con GetProcAddres

Salve a tutti.
Da un po' di giorni sono alle prese con un errore provocato dalla
funzione in oggetto.
Il programma non l'ho scritto io, visto che il sorgente l'ho trovato
su una distribuzione in un CD e compila perfettamente. Il problema e`
che non fa quello che dovrebbe e smanettando un po' ho scoperto che il
problema veniva da GetProcAddres e GetLastError mi restituiva per essa
il codice 203 ovvero ENVVAR_NOT_FOUND. 
Tenendo conto del fatto che io ho compilato il sorgente su XP con
Visual Studio 6.0 quale e` secondo voi la variabile di ambiente che
non trova??
Il pezzo di codice da cui proviene l'errore e` il seguente:
if ((m_hInstance = LoadLibrary("Scard32.dll")) != NULL)
{
       m_pSCardCommand	= (SCardCmd)GetProcAddress(m_hInstance,
"SCardComand");
       m_nCurrentStatus = MsgError;
      etc, etc...............
}
--
Cesare.

 non trova??
Il messaggio associato al codice e` leggermente ingannevole: quella
che non trova e` la funzione che stai cercando.
Spiega l'MSDN, e sospetto sia il tuo caso:
"""
The exported names of functions may differ from the names you use when 
calling these functions in your code. This difference is hidden by macros
"""
(e, aggiungo io, non solo dalle macro: ci sono anche le "decorazioni" dei
nomi fatte dai compilatori a seconda della convenzione di chiamata, ad es.).
Cerca di scoprire ESATTAMENTE i nomi che esporta Scard32.dll: nulla
di piu` facile che un nome non sia ESATTAMENTE "SCardCommand" ma
ad esempio qualcosa di SIMILE, ma in qualche modo "decorato" (tipo, che
so, "SCardCommand@8" per una funzione di tipo WINAPI, ecc ecc).
Alex

so, "SCardCommand@8" per una funzione di tipo WINAPI, ecc ecc).
Nella documentazione del programma e` riportato proprio SCardComand,
inoltre:
1) Se cambio il nome inserito nella funzione il codice e` diverso,
ovvero 127 --> funzione non trovata.
2) Nella distribuzione c'e` anche un esempio, questa volta
funzionante, in Visual Basic e la funzione viene proprio richiamata
con SCardComand....
Questo mi fa pensare che la funzione venga trovata, ma ci sia un altro
problema....cmq ti ringrazio lo stesso.
--
Cesare.

Newsgroup: it.comp.lang.c
Titolo: gradirei informazioni

non riesco a reperire un manuale, e già che ci sei dimmi come ti chiami ?


Scusa ?
Sati postando su un news-group pubblico in cui si scrive in
lingua italiana e dedicato al linguaggio di programmazione C.
Puoi esprimerti in termini piu' espliciti/precisi/consoni?
-----------== Posted via Deja News, The Discussion Network ==----------
http://www.dejanews.com/
       Search, Read, Discuss, or Start Your Own
Newsgroup: it.comp.lang.c
Titolo: Xor e conversione

Dovrei fare lo xor tra stringhe, e a quanto ho capito la soluzione + 
semplice potrebbe essere, nel convertire le stringhe in binario.
Se è così, come converto una stringa in binario?? e se avessi altri tipi di 
dato come faccio a convertirli in binario??
Tnx for raply :) 

Alien wrote:

Non ho capito, puoi spiegarti meglio?
Comunque credo che tu voglia fare uno xor byte a byte della stringa, quindi
scorrila ed esegui lo xor con il byte che desideri di 1 altra stringa.
Sostanzialmente se hai stringa1 e stringa2 (supponiamole di uguale lunghezza
per ora) ti basta un:
for(i=0;i<strlen(stringa1);i++) stringa1[i]^=stringa2[i];
Tieni presente che se in seguito vuoi lavorare su stringa1 è possibile che
le funzioni comunemente usate per le stringhe non funzionino più
correttamente in quanto lo xor può trasformare un byte "interno" alla
stringa in uno 0, che verrebbe però interpretato come terminatore.
Ciao
-- 
none


Cos'e' uno xor tra stringhe?
Il concetto di "conversione in binario" e' abbastanza definito nel caso 
di numeri, forse anche abbastanza nel caso di stringhe, ma sicuramente 
assai piu' nebuloso per strutture dati piu' complesse. Dipende da cosa 
intendi, e da cosa vuoi fare.
-- 
Mat/tia Belletti - Graduate student @ 
cs.unibo.it
ICQ: 33292311    - email: 
mbel...@cs.unibo.it
IRC: RedGlow     - site(s): 
http://mbellett.web.cs.unibo.it/
Jabber: RedGlow  - Linux registered user 299762 @ machine 213003

Il mio scopo finale č quello di criptare una stringa di caratteri ed avevo 
pensato a fare uno xor con un'altra stringa. Il procedimento per fare ciň, 
com'č? (considerando quello che avevo detto nel primo msg) 

Alien wrote:

anche se come sistema per criptare č piuttosto banale una soluzione potrebbe
essere:
[s1=stringa da criptare]
[s2=stringa x criptare]
if (*s2!='\0')
        for(i=0,n=0;i<strlen(s1);i++){
                s1[i]^=s2[n];
                if (s2[n+1]=='\0') n=0; else n++;
        }
-- 
none

 ha scritto nel messaggio 
news:ltjyd.556203$35.23...@news4.tin.it...


 e l'uscita con printf()
ok, ma printf() non è sicura al 100% sulla stringa di output (sempre per il
motivo che lo xor potrebbe generare un \0), quindi mi perdonerai se uso
write().
Inoltre bisogna filtrare l'output attraverso un dumper esadecimale, perchè
la stringa sottoposta a xor sarà presumibilmente composta da alcuni
caratteri non printabili.
int i,n,f;
char s1[]="qwertyuiopasdFGHJKlzxcvbnm12345";
char s2[]="provaabbb";
f=strlen(s1);
write(1,s1,f);
write(1,"\n",1);
if (*s2!='\0')
        for(i=0,n=0;i<f;i++){
                s1[i]^=s2[n];
                if (s2[n+1]=='\0') n=0; else n++;
        }
write(1,s1,f);
write(1,"\n",1);
e questo è il dump esadecimale dell'output:
71 77 65 72 74 79 75 69  6f 70 61 73 64 46 47 48  |qwertyuiopasdFGH|
4a 4b 6c 7a 78 63 76 62  6e 6d 31 32 33 34 35 0a  |JKlzxcvbnm12345.|
01 05 0a 04 15 18 17 0b  0d 00 13 1c 12 27 26 2a  |.............'&*|
28 29 1c 08 17 15 17 03  0c 0f 53 42 41 5b 43 0a  |()........SBA[C.|
Ciao.
-- 
none

 ha scritto nel messaggio 
news:6Pyyd.560141$35.23...@news4.tin.it...


 ha scritto nel messaggio 
news:6Pyyd.560141$35.23...@news4.tin.it...

Newsgroup: it.comp.lang.c
Titolo: ma perchè..??

Salve,
ho un problema strano e sono costretto a chiedere aiuto...
ho una funzione (chiamiamola setchar) che deve impostare i valori di  
alcune stringhe di char:
void
setchar(..)
{
	char *a, *b, *c,...;
 
	a = readchar(...);
	b = readchar(...);
	...
}
le stringhe vengono impostate in base al ritorno di una funzione readchar  
che, in base ai parametri passatele, ritorna una diversa char
char*
readchar(...)
{
	char* val;
 
	...computo val...
	return val;
}
in tutto questo procedimento ci dev'essere qualcosa di sbagliato...
infatti con un dbg trovo che alla chiamata a = readchar(...) la variabile  
a ha assunto il valore corretto,
ma quando passo a b = readchar(...) b ha il nuovo valore, ma anche la  
variabile a ha assunto il medesimo valore di b!!
Questo va poi a continuare per le altre variabili, e questo comporta alla  
fine che tutte abbiano lo stesso valore dell'ultima variabile...!
Lo stesso problema si presente se utilizzo una readchar di questo tipo:
void
readchar (..., char** val)
{
	*val = ...
}
per cui i valori li modifico ad esempio con una chiamata readchar(..., &a)
sapete aiutarmi?dove sbaglio??
grazie
-- 
Using Opera's revolutionary e-mail client: 
http://www.opera.com/mail/

Sembrerebbe che readchar lavori sempre su cio' che ha restituito.
Ovvero readchar opera per riferimento ad un valore, la prima volta lo
restituisce ad 'a' che quindi punta tale valore. Successivamente
readchar continua a lavorare sullo stesso valore che e' anche quello
puntato da 'a'.
Prova a postare l'esatto codice di readchar
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Giovanni
-- 


 utilizzato  le vaire *a, *b, ecc..?
La free devi chiamarla una volta che non ti servono più le aree allocate.
Ovviamente, in un blocco dove lo scope dei puntatori a, b ecc è ancora noto e
valido...
Se le aree allocate per a, b ecc le usi anche fuori da setchar, allora non è
semanticamente corretto chiamare la free su quei puntatori. Ma è anche vero
che lo scope di tali puntatori, da come hai scritto tu, è solo interno alla
funzione setchar.
Ciao.


Newsgroup: it.comp.lang.c
Titolo: per iniziare

Ciao a tutti.
Sono un programmatore java e devo imparare a programmare in C in rete
(socket, ecc.).
Un po' di C lo mastico, ma mi manca un testo specifico su C e socket.
Potreste indicarmi qualcosa di gratuito da scaricare e studiare (magari in
italiano, ma va bene anche in inglese).
Grazie a chiunque vorrà aiutarmi.
Saluti.
Alex


I'm not prejudiced, I hate everyone equally.
Newsgroup: it.comp.lang.c
Titolo: Review of the University of the People

The University of the People is a tuition free institution with online programs for degree and master's degree seeking individuals.
The institution's online programs presents the opportunity to select from different programs by indicating interest; submission of requirements. Once the requirements are met, access to the online platform referred to as Moodle is provided. The online platform is easy to navigate, it has vast resource materials, involvement in academic activities such as assignments, exams, etc. 
It is a great place to be with supportive and well equipped instructors and program advisors who are readily available to make the journey quite seamless.
 
I started my program at the university 2022, my experience has been memorable, I have been able to receive support from my program advisor and instructors, their response time is immediate and has encouraged me to put in my best. I have been on the honors list for 2 consecutive terms and I intend to keep giving it my best. The resource materials help self learning and are vert relevant in our everyday lives.
 
Visit 
https://www.uopeople.edu/
 to start your journey.


Navigating my academic path at the University of the People (UoPeople) has been a journey marked by both positive aspects and challenges. The university's dedication to making education affordable and accessible has allowed me to pursue higher learning within the constraints of a limited budget, and the diverse student body has broadened my understanding of different cultures.
 
However, the flexibility of the online learning format, though advantageous in many respects, has presented hurdles. The asynchronous nature of courses sometimes impedes the formation of a strong sense of community, and engaging in real-time discussions can be challenging. The onus on self-discipline and motivation demands a proactive approach to maintain focus and meet academic requirements.
 
On a positive note, the faculty has generally demonstrated responsiveness and dedication, providing constructive feedback and support. The university's commitment to continuous improvement is evident, but certain aspects of the learning platform and resources could be further enhanced.
 
While the curriculum maintains a commendable level of rigor, there are instances where a greater emphasis on practical applications of theoretical knowledge would be beneficial. Striking a better balance between theory and real-world relevance could enhance the preparation of students for their future careers.
 
In summary, my academic journey at UoPeople has been characterized by a blend of strengths and areas for improvement. The commendable affordability and global community aspects provide a strong foundation, but refining the online learning format and certain aspects of the curriculum would contribute to an even more enriching educational experience. As I progress in my studies, I remain hopeful for ongoing enhancements that will elevate the overall quality of education at UoPeople.
Newsgroup: it.comp.lang.c
Titolo: Scansione di un file matrice

Salve a tutti
Sono alle prime armi in C, due libri davanti e 2 ore perse a non fare un
tubo
:)
ho scritto un programma in C (dev-c++)
che alloca dinamicamente lo spazio x due matrici bidimensionali...
le riempie e me le salva su disco in questo formato
1 matrice
2 riga
3 colonna
34 56 34
25 12 456
2 matrice
3 righa
2 colonna
34 54
23 65
78 98
ora
vorrei avere accesso alla seconda riga, prendere il valore 2,
aver accesso alla prima riga della seconda matrice e prendere il valore 2
...
nsomma
vorrei prendere i valori e moltiplicare le due matrici
ho provato a
1) fgets genera una stringa di caratteri in un vettore stringa
2) sscan scandisce la stringa
3) atoi mi converte i valori in interi
ma come giro rigiro
non ci riesco
qualcuno puň aiutarmi???
grazie


Talking about music is like dancing about architecture.
                -- Laurie Anderson

vorrei prendere i valori e moltiplicare le due matrici
io userei fscanf
fai fscanf("%d %s",&n,stringa) così leggi una riga alla volta
prendendo il numero e la scritta matrice  o riga, poi dopo che hai
letto riga fai n volte fscaf ("%d %d",&n1,&n2) e ti prendi i numeri di
ciascuna riga...

ciascuna riga...
se scrivo fscanf(input, "%d %d, &n, stringa) mi prende il primo valore come
intero, il secondo come stringa...
ok
ma poi come imposto di fare fscanf alla seconda riga del file???
e come faccio a dire
di fare fscanf(input, "tanti %d quanti sono quello nel file?", &n1,
%n2...etc?)
non so se mi spiego?
:)
cmq grazie x l'idea di fscanf

for (k=0; k<2; k++) {
    fscanf (miofile, "%d", &riga[k]);
    }
printf ("%d", riga[0]);
mi legge dal file le prime 2 righe e mi visualizza la prima
se metto 1 al posto di 0 mi visualizza la seconda...
ma come faccio a impostare fprintf a leggere
da file una cosa come
242 335 2313 1313 1313 1313
e mettermela su di un vettore di grandezza "righe"
il vettore lo creo con la "calloc" ma la fscanf???
aiutatemi x favore!!!!
:)

quello nel file?", &n1, %n2...etc?)
beh dopo che hai letto il numero di righe e di colonne:
for (i=0;i<righe*colonne;i++)
	fscaf("%d",&matrice[i]);
l posto di matrice[i] mettici un array bidimensionale, beh fai tu :-)
tu leggi un numero alla volta, non fai una fscanf con dentro tanti %d

 cmq grazie x l'idea di fscanf
ciao

Newsgroup: it.comp.lang.c
Titolo: int su array

salve
qualcuno sa come copiare un intero di n cifre in un array di interi di n
elementi?
cioe' fare una cosa del tipo
int a=1234;
int b[4];
e poi alla fine avere
b[0]=1:
b[1]=2;
b[2]=3:
b[3]=4;
grazie

b[0]=1; b[1]=2; b[2]=3; b[3]=4;
Ti do solo un aiutino (li esercizi dovresti farli tu, in teoria :) )
   1234 / 10 restituisce 123
   1234 % 10 restituisce 4
Questo suggerisce qualcosa ?
Andrea
PS: 
  Poi c'e' anche la funzione "div" di <stdlib.h> che
  calcola in un colpo solo quoziente e resto... ma questo
  e' un altro discorso.
--
Andrea Griffini, Programmer
http://www.netservers.com/~agriff

 
http://www.netservers.com/~agriff
il problema e' che devo implementare in un solo programma vari algoritmi
di ordinamento , devo ordinare un array di interi con
inserzione,quicksort ,mergesort, selezione, heapsort,ed infine il radix
sort LSD
e' proprio quest'ultimo che mi crea problemi : dovrei trasformare un
array del tipo
{12,34,1,901} in
{{1,2},{3,4},{1},{9,0,1}}e passarlo al radix sort

{{1,2},{3,4},{1},{9,0,1}}e passarlo al radix sort
Per il radix non ti consiglio di usare come base
10... usare come base 2^n e' molto piu' comodo.
Ad esempio con n=8 e utilizzando un insieme di
256 bucket puoi ottenere la i-esima "cifra" (che
corrisponde all'i-esimo byte e che quindi come
valore e' compresa in 0..255 invece che 0..9)
semplicemente con
   (value >> (i*8)) & 0xFF
Questo, immaginando di ordinare numeri a 32 bit,
significa fare solo 4 passate sui valori.
Andrea


 
http://www.netservers.com/~agriff
Grazie per la risposta, ho cmq utilizzato il tuo primo "consiglio"
anche perche' veniva richiesto di utilizzare base 10;
un'ultima domanda c'e' qualche ragione perche' dovrei utilizzare il
radix sort al posto di un quicksort o merge sort?

o merge sort?
Il radix sort e' lineare ( O(N) ) nel numero di
elementi da ordinare se questi elementi sono di
lunghezza fissa (gli altri algoritmi sono in genere
dei O(N log(N)) ).
Come svantaggi ha un grande fattore costante e un non
piccolissimo fattore lineare e quindi risulta
conveniente solo da un certo numero di elementi in poi.
Sempre fra gli svantaggi il radix non trae alcun
beneficio da un eventuale quasi-ordinamento della
sequenza in ingresso e risulta meno semplice sfruttare
il parallelismo in sistemi multiprocessore.


 
http://www.netservers.com/~agriff
capito grazie

dei O(N log(N)) ).
non riesco ad capire di preciso cosa voglia dire "di lunghezza fissa".
Se intendi che gli elementi hanno un range di valori ben definito,
allora non sarebbe meglio usare un bel distribution counting?
Anto
--
Antonio Cuni, 19 anni, studente
Brainbench C++ Master: 4.6, higher than 98% of all previous test takers.
C Language: 3.32, higher than 79% of all previous test takers.
Guida C/C++ di Programmazione.it: 
http://cpp.programmazione.it