mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c
Titolo: lettura file

Ciao,
sto facendo un programma che mi legga carattere per carattere il contenuto
di un file e per ognuno di essi incrementi l'intero contenuto in un vettore
alla posizione corrispondente al codice del carattere per vedere quante
volte si sono presentati tali caratteri. Il prolema è che tale programma in
realtà non legge tutto il file ma si ferma sempre prima...per giunta dopo
pochi caratteri. Dov'è il problema? Il codice è il seguente:
int main(){
     int hz[256]={0};
     char c;
     FILE *f;
     f=fopen("nomefile.abc","r");
     while (!feof(f)) {
          c=fgetc(f);
          hz[c]++;
     }
     return 0;
}
GRAZIE!!!
Fabrizio


dunque. Se sei sotto windows intanto per sicurezza aprirei il file
in modo binario ("rb" invece di "r"). Forse non c'entra, ma
e' sempre meglio ricordarlo.
poi il carattere c sarebbe corretto tu lo definissi come un int,
che poi e' quello che restituisce la funzione fgetc,
o al limite come un unsigned char.
Se sulla tua macchina i char sono signed, allora la lettura
di un carattere di codice superiore a 128 si tradurrebbe in un
valore di c negativo, e quindi andresti ad accedere (con hd[c])
a una zona di memoria fuori da hz[].
L'errore grave comunque e' questo:
Tieni conto che la feof(f) segnala se hai cercato di
leggere dopo la fine del file, non se sei alla fine del file.
Quindi quando sei alla fine del file fai ancora una lettura,
e la fgetc ti restituisce un int che corrisponde a EOF (cioe'
di solito -1) siccome tu non fai un controllo e lo leggi come
signed char probabilmente hai c = -1 e vai ad accedere a hz[-1]
da cui l'errore.
quindi forse era meglio un ciclo del tipo
int c;
while (EOF != (c=fgetc(f)) hz[c]++;
Infine anche se forse non e' strettamente necessarioe e'
meglio ricordarsi di chiudere sempre i file che si aprono.
ciao,
g.

PERFETTO!!! Funziona benissimo! GRAZIE!!!
Newsgroup: it.comp.lang.c
Titolo: iul problema dello gnammy

Dunque sono davanti ad un problemino informatico che magari per
qualcuno di voi e' una cavolata, ma che mi sta facendo diventare pazzo
!!! Quindi se qualcuno mi da una manina mi farebbe moooolto felice !
Allora, il problema e' il seguente:
cosrruire un software (in qualsiasi linguaggio, ma a me interessa il
provedimento teorico) che simuli il monmdo dello Gnammy che ha le
seguenti caratteristiche:
Una matrice 9 x 9 con all'interno una creaturina (lo gnammy appunto)
che deve muoversi in modo casuale all'interno della matrice occupando
sempre una sola casellina; ora lo gnammy dispone di 20 punti salute e
ogni mossa che fa ne perde uno, quando arriva a zero (quindi dopo
venti passi) muore.
All'interno della matrice l'unica speranza di vita e' una pizza che si
trova sempre ferma nella stessa posizione (che all'inizio della
simulazione viene decisa in modo casuale); quando lo gnammy capita
sulla casella della pizza se la mangia tutto contento e la sua salute
se ne torna a 20, a questo punto la puzza appare spostata di due
caselle a sinistra e di due in basso (eventualmente spuntando
dall'altra parte della matrice) e lo gnammy continua a camminare a
random finche' o muore di fame o ritrova la piuzza e cosi' via.
Domanda : supponendo che quando lo gnammy muore risorga in un punto
casuale della matrice (quindi di nuovo con salute 20 e ricominci a
scorrazzare libero, (mantenendo i suoi ricordi delle "incarnazioni
passate") come e' possibile far si che lo gnammy (inizialente
ignorante della propria sfigata condizione) cominci dopo una certa
n-esima generazione a cercare autonomamente la pizza, avendo capito
che e' il suo unico mezzo di sopredavvivenza ?
Grazie dell'attenzione.
Augusto Pucci
Webmaster di Prospektiva On-line
http://go.to/Prospektiva

Anche se mi sembra che sia OT, lo trovo abbastanza carino, appena ho
un attimo di tempo lo faccio.... anche se sono sicuro che Laforgia,
sempre che non sia troppo occupato, postera' il codice nel giro di
poche ore ;-)
Ammetto pero' che la parte che riguarda l'_evoluzione_ del simpatico
esserino mi lascia un po' perplesso...
P.S. Tempo fa Laforgia postava codice "a iosa" perche' era
disoccupato: spero (sinceramente) che la diminuzione della sua
produttivita' sia dovuta ad un nuovo impiego
--
 Ciao, Luca.
 Reply to 
luca....@tiscalinet.it

Credo che ti convenga postarlo su it.comp.giochi.sviluppo, credo sia un ng
più "giusto"...

xche' OT ? Comunque a quanto mi e' stato detto la parter
dell'apprendimento dovrebbe sfruttare la logica del primo ordine ed
una serie di assiomi predefiniti.


produttivita' sia dovuta ad un nuovo impiego
Eh eh, hai indovinato ! ;)
belli i tempi della formica di langton ! ;))
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
---------------------------------------------

Vermante questo di cui parlo non e' affatto un giochino se e' quello
che hai pensato.


 belli i tempi della formica di langton ! ;))
Questa non l'ho capita, devo essermi perso qualcosa...


Questa non l'ho capita, devo essermi perso qualcosa...
Era un problema simile a quello dello gnammy...

Newsgroup: it.comp.lang.c
Titolo: da int a char

Come faccio a convertire un int in char?
Grazie mille!!!!!
sherty!

Come faccio a convertire un int in char?
Che vuoi dire? Spiegati meglio.
Forse intendi
int a=36;
char b;
a=(char)b;  //oppure a=b; ma quest'ultimo dovrebbe segnalare un
errore.
Se intendi per convertire stampare il valore di un int come char
int a=30;
printf("%c", a)
Tieni presente che questa conversione non dovrebbe essere fatta e che
se il valore dell'intero eccede il valore massimo di un int perderai
dei dati.

 errore.
Il mio codice è:
int a = 36
char * b.
Vorrei assegnare 36 in char a b puntatore...
serhty



allochi spazio al puntatore b e poi dai
sprintf(b, "%d", a);
che dovrebbe funzionare come printf solo che stampa sulla stringa b

 che dovrebbe funzionare come printf solo che stampa sulla stringa b
GRAZIE GRAZIE GRAZIE!!!!
:o)
sherty!!!

sprintf(b, "%d", a);
b non punta a nulla. Devi prima allocare la memoria necessaria o
dichiarare b come "char b[n]" dove "n" è un numero abbastanza grande
per contenere la stringa.
-- 
Marco Barisione (ICQ 84277092)
Newsgroup: it.comp.lang.c
Titolo: Allocazione dinamica di una matrice

Qualcuno saprebbe dirmi come fare?
Grazie
--
=================================
"STRICTLY PERSONAL AND CONFIDENTIAL
This message may contain confidential and proprietary material for the sole
use of the intended recipient. Any review or distribution by others is
strictly prohibited. If you are not the intended recipient please contact
the sender and delete all copies.
The contents of this message that do not relate to the official business of
our company shall be understood as neither given nor endorsed by it."
=================================

 the sender and delete all copies.
Non a queste condizioni.
<g>
Azathot

 Grazie
Devi allocarti un array di puntatori a TYPE:
TYPE** matrice = malloc( NUMERO_DI_RIGHE * sizeof(TYPE*));
ora matrice[0],...., matrice[NUMERO_DI_RIGHE-1] contengono puntatori a TYPE
attenzione che non sono inizializzati
allora per ognuno di questi ti allochi un array di TYPE
per esempio per allocarti la prima riga fai
*matrice = malloc( NUMERO_DI_COLONNE * sizeof(TYPE));
e quindi puoi utilizzare
(*matrice)[0] ... (*matrice)[NUMERO_DI_COLONNE-1]
ora devi stare attento a due cose
malloc puo' pure ritornarti NULL , ovvero ha fallito
e quindi lo devi gestire
ed inoltre devi liberare la memoria allocata con free
free(matrice[0]),...free(matrice[NUMERO_DI_RIGHE-1])
free(matrice);
Ciao
--------------------------------
Inviato via 
http://usenet.libero.it

 Non a queste condizioni.
hai perfettamente ragione

Il sistema che ti ha indicato Dario e' ok, ma io te ne propongo un altro...
Invece di allocare riga per riga, fai tutto in un unica allocazione...
Mettiamo a te serva un array di interi
1) Dichiari il puntatore:
int * AdI = NULL;
2) lo allochi
AdI = malloc(LARGHEZZA*LUNGHEZZA *sizeof(int));
3)e lo gestisci cosi:
AdI[NUM_RIGA * NUM_COLONNA] = ....................
ricordandoti che la prima riga e' la 0 e la prima colonna pure.
4)In questo modo, successivamente, dovrai fare una sola deallocazione.
free(AdI);
AdI = NULL;
È un pò come prendere una matrice, staccargli le righe >0 ed allinearle
alla prima in senso orizzontale...non so se mi spiego :p
Phones

 ricordandoti che la prima riga e' la 0 e la prima colonna pure.
Ph.

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

Ciao a tutti, sono nuovo da queste parti. Dato che dovrei studiare il C per
un exam, devo per forza di cose comprare un manuale che tratti dell'ANSI C.
Quale mi consigliate?
Ringrazio anticipatamente, ciao.

...Ho un urgente bisogno di una risposta!.. Comunque ho una cosa da
aggiungere. Io ho studiato qualche mese fa un po' di C++ sul libro di
Lippman(Corso di programmazione in C++), e mi sono trovato beneissimo, e
chiunque sento lo descrive come un libro eccellente. Esiste una cosa del
genere anche per il semplice linguaggio C?
Rispondetemi, per favore...
...io intanto cerco di documentarmi ancora un po'.
Byez.


I'm not prejudiced, I hate everyone equally.

 iniziare, ma se gia' sai qualcosa di C++ e di programmazione vai di lusso
...
grazie tante.
Newsgroup: it.comp.lang.c
Titolo: problema con parole accentate

Salve a tutti!!!
Sono un principiante del linguaggio C.
Il mio problema è questo:
quando cerco di far stampare con la printf() una stringa contenente un
carattere accentato, al posto del carattere accentato mi compare uno
strano simbolo.
C'è qualcuno che può aiutarmi ?
Ciao a tutti.
PS: 
Uso il Visual C++ 6.0 e cerco di scrivere un applicazione console, cioè
che visualizza il testo da stampare nella finestra msdos di windows.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 strano simbolo.
Il problema non e' della printf, ma nelle impostazioni della tua console
Windows.
Rivolgiti ad it.comp.os.win.*, sapranno sicuramente consigliarti meglio
di me sulle impostazioni di Windows :-).
C:\>iao Angelo


Newsgroup: it.comp.lang.c
Titolo: [OT?] disassemblare e riassemblare

Ho un programma gia' compilato, che devo analizzare (esercizio dell'uni :)
Lo sto studiando, disassemblato con "objdump -d programma".
E' possibile modificare quello che ottengo da objdump, e riassemblare il 
programma cosi' modificato (ad es. al momento vorrei eliminare una chiamata 
a funzione) ?
Thx,
Pleg 

 programma cosi' modificato
Sì ma tu vuoi anche poterlo risalvare nel file originale mentre objdump 
ti da un dump.
Usa un editor esadecimale o un debugger vero e proprio, con gdb ad 
esempio cambi l'istruzione e continui l'esecuzione.

 esempio cambi l'istruzione e continui l'esecuzione.
Buona idea, thx!
Pleg

Newsgroup: it.comp.lang.c
Titolo: Validazione stringa indirizzo IP

Ho bisogno di validare una stringa contenente un indirizzo IP dor
formatted (tipo "192.168.0.128")
Esiste una libreria C o delle funzioni C già pronte ?
Grazie

 Esiste una libreria C o delle funzioni C già pronte ?
Lo standard ISO non prevede networking, c'è la funzione POSIX
inet_aton(3). Il formato è abbastanza semplice, puoi anche scrivere una
funzione ad hoc, e.g.:
ret = sscanf(buf, "%u.%u.%u.%u", &a, &b, &c, $d);
if (ret != 4)
        errore();
if (a > 255 || b > 255 || c > 255 || d > 255)
        errore();
Ci vuole solo qualche altra linea di codice per controllare (nel caso
serva) che l'indirizzo non sia in una classe privata oppure multicast
(oppure localhost, o quello che ti serve).
Luca
-- 
"La mia teoria scientifica preferita e` quella secondo la quale gli 
 anelli di Saturno sarebbero interamente composti dai bagagli andati 
 persi nei viaggi aerei." -- Mark Russel
Newsgroup: it.comp.lang.c
Titolo: modificare un char

ciao a tutti...è possibile in c fare la somma tra 2 char?
ad esempio dichairo le stringhe char mex[]="ciao"; e  char
mex2[]="1";   posso fare una cosa del tipo mex=mex+mex2??
lo so che la somma che ho scritto è errata ma era giusto x far capire
cosa vorrei ottenere
thx

 ha scritto nel messaggio 
news:f65257ec-3ab7-439c...@e67g2000hsc.googlegroups.com...
ciao a tutti...è possibile in c fare la somma tra 2 char?
ad esempio dichairo le stringhe char mex[]="ciao"; e  char
mex2[]="1";   posso fare una cosa del tipo mex=mex+mex2??
No, devi usare funzioni apposite, tipo strcat(mex, mex2).
bye
brix

 cosa vorrei ottenere
Non si capisce. In ogni caso dovresti chiarirti un po'  meglio le idee. 
  Prima chiedi se si possono sommare 2  char (la risposta č  sě  ma 
perché  i char sono un il piů  piccolo tipo intero e  sugli interi la 
somma č  definita).  Poi fai  esempi contenenti stringhe  che NON sono 
di tipo char (sono particolari array  di char).
Giorgio

 No, devi usare funzioni apposite, tipo strcat(mex, mex2).
Questa strcat(), nel caso specifico, è sbagliata, perché non c'è spazio
sufficiente in mex per aggiungere mex2. Bisogna prima allocare lo spazio
sufficiente.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 ciao a tutti...è possibile in c fare la somma tra 2 char?
Non si tratta di due char, ma una concatenazione di stringhe:
#include <stdio.h>
#include <stdlib.h>
char *concat(const char *s1, const char *s2) {
     char *res = malloc(strlen(s1)+strlen(s2)+1);
     if (res)
        sprintf(res, "%s%s", s1, s2);      
     return res;
}
int main()
{
    char a[] = "pippo";
    char b[] = "pluto";
    char *c = concat(a,b);
 
    printf(""%s" + "%s" = "%s"n", a, b, c);
 
    free(c);
    return 0;



giusto... 

grazie x le risposte...ho risolto in questo modo
..................
char mex[]="Ciao";
char totale [100];
................
strcat(totale,mex);
...................
facendolo ciclare m icrea un stringa di ciao crescente....thx ragassi


Newsgroup: it.comp.lang.c
Titolo: Windowing in modalità testo

componenti ed eventi come finestre, caselle di testo, pulsanti etc.
Se stai parlando di ambiente DOS : 
http://www.simtel.net/simtel.net/
(la pagina dedicata al linguaggio C e'
http://www.simtel.net/simtel.net/msdos/c.html
)
ciao

 un sistema di windowing da utilizzare in modalità testo...
Certo che si.  La libreria [n]curses, ad esempio, usata per programmi
come lynx e pine sotto Unix.  Sarebbe pero' utile sapere in che
ambiente programmi...
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Univ. of Padova, Dept. of Physics - Padova, Italy            
lor...@pd.infn.it

 sistema di windowing da utilizzare in modalità testo... 
  Cerca la libreria /curses/.
	Alla prossima,
		Marco

 io programmo in ambiente DOS e non Unix e non so se è compatibile...
  Esistono le curses anche per il DOS: il /porting/ DJGPP del
compilatore GNU le ha.
  Nota: se non sei interessato alla portabilita` del tuo programma, puoi
anche prendere in considerazione le sequenze di /escape/ del terminale
ANSI: il terminale del DOS e` compatibile con questo standard.
	Alla prossima,
		Marco

Newsgroup: it.comp.lang.c
Titolo: differenza tra "const" e "static const"

sto' usando un microcontrollore con un compilatore c.
se dichiaro:
static unsigned short const = 10;
e
unsigned short const = 10;
cosa cambia al compilatore c ?
secondo me niente.sara' una costante sempre presente all'interno del 
main e delle sottofunzioni credo.
mi date un parere ?
grazie
PippoPippo

 del main e delle sottofunzioni credo.
La prima definizione della variabile var ha come scopo il solo oggetto
compilato in cui viene dichiarata (cioè non viene esportata).  La
seconda viene esportata ed avrà come scopo tutto il programma.
Se il programma è contenuto in un unico file le due definizioni sono
equivalenti, se invece viene sviluppato su molti file e vuoi che la
variabile sia utilizzabile da tutti i file deve essere usata la
seconda definizione assieme alla dichiarazione (con 'extern') nei file
che la devono usare (oppure in un header file).
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   Registered Linux user #337974  < 
http://giovanni.homelinux.net/
 >

 unsigned short const = 10;
E' una variabile GLOBALE visibile all' intero programma
ovvero in tutti i moduli.
Nei moduli in cui non viene definita va dichiarata come
external (oppure messa in  "extern".h  ;-)  ):
extern unsigned short const;
B.
Newsgroup: it.comp.lang.c
Titolo: fare programmi per internet

come si fà a comunicare con un server come se fossi in telnet ?
per esempio come faccio a loggarmi su un sito ftp tramite C ?

 per esempio come faccio a loggarmi su un sito ftp tramite C ?
Devi utilizzare i socket. In rete trovi vari documenti/guide.

Newsgroup: it.comp.lang.c
Titolo: inizializzare double a zero

Ciao a tutti
Una domanda:
se devo inizializzare un double a zero, è possibile
farlo tramite bzero?
Mi serve perchè ho una struttura di double e in un programma
già fatto viene inizializzato così.
Ciao e grazie

 già fatto viene inizializzato così.
Puoi utilizzare memset, di cui ti fornisco il prototipo
void *memset( void *dest, int c, size_t count );
Ciao
Ale

 Che funzione è bzero? mai sentita
Ok, bzero non è standard, ma e' utile (è facile invertire t e count,
parecchi bug, strano ma vero, sono dovuti a questo (vedi a proposito
r. stevens - unix networking programming vol1))...
Senza volermela prendere con te (anzi, grazie per la risposta, d'estate 6
stato l'unico), e senza voler fare un flame, mi sembra che
alcuni messaggi cadano nel ridicolo: cos'è lo schermo? cos'è un driver,
ecc. E' vero che il nel C/C++ standard non è contemplato niente del
genere, ma vorrei aggiungere che il C/C++ è implementato in computer
fisici e non tenerne conto rende molte discussioni solo filosofeggianti.
Credo che il NG avrebbe molto da guadagnarci se si parlasse di C/C++
"pratico". Per quanto credo ciò porterebbe a parlare anche di particolari
contesti, credo che ciò non possa che essere un bene...
p.s. Ah, dimenticavo, andrò in vacanza e non posso rispondervi (non
volevo fare un flame, cvd).
Ciao

 farlo tramite bzero?
No.
Luca
-- 
Home: 
http://kronoz.cjb.net
Windows /win'dohz/ n. : thirty-two  bit extension and graphical shell to
a sixteen  bit patch to an  eight bit operating system  originally coded
for a  four bit microprocessor  which was  written by a  two-bit company
that can't stand a bit of competition.

 contesti, credo che ciò non possa che essere un bene...
Ci sono i ng piu` appropriati. Questo (it.comp.lang.c) dovrebbe servire
solo per discussioni sul linguaggio in quanto tale.
Luca
-- 
Home: 
http://kronoz.cjb.net
Non sempre quello che viene dopo e` progresso.
Alessandro Manzoni

 volevo fare un flame, cvd).
Fammi capire, come dire "vi faccio una domanda ma chissenefrega se
rispondete, tanto non leggerò mai le vostre risposte?"
:-\
Mah...
---
SiMoStro

Antonio wrote:

Esistono i costruttori apposta!
class prova
{
        double d;
public:
        prova() : d(0.0) { }
};
O no? Forse ho capito male.

Newsgroup: it.comp.lang.c
Titolo: piccolo compilatore c

qual č il pių "piccolo" compilatore c?
per "piccolo" intendo che abbia, ad esempio, solo l' eseguibile del
compilatore senza troppe opzioni e la libreria.
grazie
ettore

 qual č il pių "piccolo" compilatore c?
http://www.cc65.org/
:-)
-- 
-=[]=---iAN CooG---=[]=-
Invalid operator detected!
Replace and press any key.
Newsgroup: it.comp.lang.c
Titolo: problemi compilazione sorg C su Sun Os 5.6

Molto gentilmente potreste darmi delle informazioni
per il problema seguente, sono impantanato e non riesco
ad iniziare la tesi. Preciso che non sono un grande esperto di
Unix, ma sto imparando.
Devo compilare dei sorgenti C di un programma
di simulazione. Seguendo rigorosamente la documentazione
fornita devo impostare una variabile di ambiente in un file che si
chiama makefile.general, per adattarlo al s.o._ La parte da cambiare č
la seguente:
# The OPSYS macro indicates on which operating system the code is built
# OPSYS       = HPUX
# OPSYS       = HPUX9
# OPSYS       = SUNOS4
# OPSYS       = SUNOS5
Nella documentazione č scritto di eliminare il commento per il sistema
operativo in uso, quindi elimino il cancelletto per l'ultima riga.
Anche se il s.o. in uso č il 5.6_ Quando eseguo il make, come indicato nella
documentazione inizia una macro(almeno credo che si chiami cosě), ma a un
certo punto esegue il comando
gmake -k (altro che non ricordo)
e il sistema risponde che non riconosce il comando.
Ho provato a chiamare il manuale riferito a gmake, cioč:
man gmake
ma il comando risulta sconosciuto.
Possibile che dalla versione 5 alla 5.6 il compilato fornito sia cambiato
cosě tanto?
Se qualcuno usa Sun OS5 puň provare a eseguire il comando "man gmake"?
Scusate per essere stato poco sintetico.
Infinitamente grazie per la risposta

man gmake
gmake e' un programma simile al make, pero' fatto dalla GNU. Puoi provare a
sostituire tutte le occorrenze di gmake con make; ma il risultato NON e'
garantito ( puo essere che vengano richieste caratteresitiche peculiari del
gmake ). Se hai problemi non ti resta altro che scaricarti il gmake ...
ciao

 riconosce il comando.
Non so sotto SunOS, ma in altri sistemi Unix il make fornito non
e' quello della GNU, che puo' essere installato a parte e prende
il nome di gmake.
[root@fokhouse /root]# gmake -v | head -1
GNU Make version 3.78.1, by Richard Stallman and Roland McGrath.
[root@fokhouse /root]#
Ciao ciao,
Andrea
-- 
"...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and 
 the Ugly)."
(by Matt Welsh)

 macro(almeno credo che si chiami cosě), ma a un certo punto esegue il


Grazie
http://www.gnu.org

Newsgroup: it.comp.lang.c
Titolo: Problema col DEV C/C++

Uso da poco la versione 4 del DEV C / C++. Ho un problema che mi fa
impazzire: quando mando sia in compilazione che poi in esecuzione il
codice... la schermata del DOS mi si apre a tutto schermo , invece della
schermata piccola solita. Ho provato piu' volte a settare  l'impostazione
della finestra del promt del dos a normale o cmq. non a tutto schermo....ma
niente. Ho perfino reinstallato il Dev senza alcun risultato!!! Mado'.... e'
atroce ad ogni compilazioni vedersi aprire la finestra!!! Help pls pls :_(
Uso winXP.
Heeeeeeeeeeeeelp

Prova con Alt + Invio
Scusa, ma perchè non ti procuri il Visual C++ ??
Ciao.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Scusa, ma perchè non ti procuri il Visual C++ ??
forse perchè non è gratis?
-- 
Rhymes
rhy...@NOSPAMmyself.com
Newsgroup: it.comp.lang.c
Titolo: routine su DB Access

Ciao,
un mio programma deve inserire dei dati che arrivano via tcp in un DB
Access.
Ora: siccome le stringhe che mi arrivano o contengono dati completamente
nuovi o modificano quelli già presenti,la mia routine (fatta con CVI
LabWindows) controlla se i dati sono nuovi (e allora fa un INSERT) o vanno
solo modificati (UPDATE).Il controllo viene fatto confrontando un campo
della stringa con uno del DB per mezzo di un SELECT MAX(campo). Il mio
problema è che quando il DB è vuoto, la query mi ritorna MAX(campo)=1 e
non 0 o NULL. C'è qualcosa che mi sfugge...Consigli?
Grazie, c. 
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 C'è qualcosa che mi sfugge...?
ad esempio... che hai sbagliato a postare sul gruppo di discussione giusto?
Ciao
-- 
Cybertoldo
Per rispondermi via email, sostituisci moc.liamg con 
gmail.com

 Ciao
Ciao,c


).

Newsgroup: it.comp.lang.c
Titolo: Confronto tra stringhe

Io dovrei realizzare un programma in C che riceve in ingresso due file
di testo (ad esempio due file *.*txt). Per ogni riga del primo file devo
contare quante volte compare al suo interno la stringa presente nella
riga di uguale posizione del secondo file. In fine devo scrivere i
risultati in corrispondenti righe di un file di output.
Io apro i due file in lettura, ma non riesco a leggere una riga di uno,
una riga dell'altro e poi non riesco a verificare quante volte la
stringa 2 si trova in stringa 1.
Se qualcuno fosse in grado di farmi un esempio gliene sarei grato.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Ti mando questo esempio ... sviluppalo e vedrai che arrivi alla soluzione
del tuo problema :)
Questo programmino legge due file di testo "prova1.txt" e "prova2.txt" e
controlla se le righe corrispondenti sono uguali o diverse ... il risultato
lo scrive nel file "provao.txt"!
OSS: Il confronto termina con la fine del file più corto!
OSS: Le righe non devono eccedere i 99 byte di lunghezza ciascuna!
----------------------------------------------------------------------------
-----
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char buf1[100],buf2[100];
FILE *in1,*in2,*out;
int main(void){
        /* Apre tutti i file su cui lavora */
        if((in1=fopen("prova1.txt","rt"))==NULL){
                printf("File prova1.txt non trovato \n");
                exit(1);
        }
        if((in2=fopen("prova2.txt","rt"))==NULL){
                printf("File prova2.txt non trovato \n");
                exit(1);
        }
        out=fopen("provao.txt","wt");
        /* Effettua il confronto e scrive il risutlato finchè il file più
corto non termina */
        while (!(feof(in1) || feof(in2))){
                fgets(buf1, 100, in1);
                fgets(buf2, 100, in2);
                if(strcmp(buf1,buf2)==0)
                        fputs("Le due righe sono uguali\n", out);
                else
                        fputs("Le due righe sono diverse\n", out);
        }
        /* Chiude tutti i file su cui lavora */
        fclose(in1);
        fclose(in2);
        fclose(out);
        return 1;
}
----------------------------------------------------------------------------
-----
Alessio C.

Newsgroup: it.comp.lang.c
Titolo: traduzione di un intero in stringa

Esiste un modo semplice per mettere un numero intero in una stringa di
caratteri? esiste una funzione di libreria?
Grazie
--------------------------------
Inviato via 
http://usenet.iol.it

caratteri? esiste una funzione di libreria?
sprintf
--
Andrea Laforgia - walkietalkie(at)
libero.it
http://www.geocities.com/AndreaLaforgia

>caratteri? esiste una funzione di libreria?
sprintf(sTmp,"Valore
intero: %d",iTmp);


Per cortesia, quota in modo corretto.

Newsgroup: it.comp.lang.c
Titolo: Makefile

Sono molto imbranato ad usare i compilatori C.
Ora, come si usano e a cosa servono i makefile ?

Servono a rendere automatica la compilazione ed il linking (e volendo
qualsiasi altro processo) dei sorgenti modificati.
Funziona con regole del tipo: "se questo .c ha una data piu' recente di
questo .obj esegui questo comando (di compilazione nel nostro caso".
Un esempio di file:
prova.exe:    prova.obj
    cl prova.obj
prova.obj:    prova.c
    cl /c prova.c
Ciao.
--
Antonio Donatiello



...





Newsgroup: it.comp.lang.c
Titolo: Opzioni di compilazione

Sto utilizzando una libreria chiamata FLTK. Nella documentazione di una
classe mi da le seguenti informazioni:
Include Files
#include <FL/Fl_BMP_Image.H>
Additional Libraries
-lfltk_images / fltkimages.lib
Premesso che sto utilizzando l'ambiente di sviluppo Dev C++, qualcuno mi
saprebbe dire come devo impostare le opzioni di compilazione per poter
utilizzare questa classe? Io non capisco niente di linker e opzioni di
compilazioni.

 #include <FL/Fl_BMP_Image.H>
Per utilizzare la libreria (suppongo una DLL), in qualsiasi ambiente, 
puoi seguire due strade:
1 - compilazione statica (in questo caso includi nel processo di link, 
nomelibreria.lib che rappresenta l'esportazione della DLL)
2 - compilazione dinamica (in questo caso devi usare le API di win, 
LoadLibrary, FreeLibrary e GetProcAddress per aprire e esportare i 
simboli delle funzioni da utilizzare)
Il primo approccio ha lo svantaggio di bloccare l'avvio 
dell'applicazione, se non viene trovata la libreria, ma ti permette di 
usare le funzioni della DLL come normali funzioni.
Il secondo approccio non blocca l'applicativo, se una DLL non è 
presente, ma ovviamente ti costringe ad usare le API per poter usare le
funzioni nell'applicativo.
Ciao

 -lfltk_images / fltkimages.lib
la prima viene usata per linkare staticamente la libreria con gcc e affini.
la seconda, beh...vedi l'altro mio messaggio. E' la compilazione statica 
per win
Newsgroup: it.comp.lang.c
Titolo: ottenere lista dei processi in corso

Salve a tutti!
Come da oggetto, è possibile ottenere la lista di tutti i processi in corso?
Se si come?

Se si come?
   In maniera fortemente dipendente dal sistema operativo e/o dal
compilatore utilizzato. Alcuni suggerimenti:
news:it.comp.programmare.win32
news:it.comp.os.linux.development
-- 
S.L.

RAPPERZ wrote:

Dipende dal sistema operativo. Sicuramente non si puo' fare in C standard.
Se stai usando linux ti consiglio di guardare il comando ps o il
funzionamento della directory /proc e sopratutto di postare su
it.comp.linux.development
ciao

 ha scritto nel messaggio
news:4bZLb.89402$_P.33...@news4.tin.it...

dipende dal sistema operativo su cui devi sviluppare.
per linux devi vedrti il comando "ps".
per windows la librearia psapi, sulla quale trovi qualche mio post
su  it.comp.porgrammare.win32
bye ;-)
Newsgroup: it.comp.lang.c
Titolo: Differenze

Ciao a tutti ho questi interrogativi che mi affliggono ;)
1. che differenza c'è tra la parola "struct" e "typedef":
cioè cosa mi permette di fare uno che l'altro non mi permette.
2. che differenza c'è tra "const" e "#define"?
3.che differenza c'è tra read, fread, scanf,fscanf?
grazie a tutti.... anche se è una stupidata .

 3.che differenza c'è tra read, fread, scanf,fscanf?
read la puoi usare sotto linux ed è una primitiva del sistema che ha qusto
prototipo:
int read(int fd, void *buf,int count);
dove fd è il file descriptor, *buf è il buffer da cui verrà letta
l'informazione e count è il numero di bytes da leggere; restituisce il
numero di bytes effettivamente letti.
la fread è uguale alla read tranne per il fatto che non è una primitiva di
sistema, ma una funzione di libreria del C che usa la primitiva read...i
parametri sono più o meno quelli....
la scanf legge i dati dallo stdin
mentre la fscanf li legge da un file.
ciao


mmmhh..
con #define si definiscono le associazioni simboliche e le macro, non e'
detto che il simbolo che crei con #define debba essere una costante,
anche se in effetti e' quello l'uso migliore di #define.
questo esempio e' corretto:
#define stampa   printf( "Salve mondo" )
int main ( void )
{
  stampa;
  return 0;
}
e anche questo:
#define VARX  x
int x;
int main ( void )
{
  VARX = 0;
  return 0;
}
ciao
donCiccio

Grazie a tutti ;)

anche se in effetti e' quello l'uso migliore di #define.
il fatto #define inizi con un cancelletto ti indica che il compilatore
C non vedra' questa istruzione, perche' sara' elaborata prima dal
precompilatore C.
Il precompilatore effettua in modo piu' o meno grezzo (vedremo dopo
cosa significa) una sistituzione del contenuto di define secondo
questo schema:
#define   nome_da_sostituire   valore che verra' sostituito
quindi:
#define pippo_ciao ciao da pippo
nel contesto:
espressione;
pippo_ciao;
espressione;
diventera':
espressione;
ciao da pippo
espressione;
Il preprocessore e' in grado di fare anche cose piu' complesse,
emulando una chiamata di funzione con una #define (nota che e'
pericoloso da usare se non hai ben chiaro come funziona).
#define stampa_errore(msg) fprintf(stderr, msg)
stampa("pericolo")  --> fprintf(stderr, "pericolo)
mox :)

3.che differenza c'è tra read, fread, scanf,fscanf?
read non e' standard, ma appartiene allo standard POSIX.
fread serve a leggere dati da un qualsiasi flusso di input,
scanf() legge per default dal flusso di input standard,
fscanf() ha la stessa funzione di scanf() ma agisce su un
flusso specifico.
-- 
The Follet
Newsgroup: it.comp.lang.c
Titolo: argv? Puntatore a puntatore...

Scusate se vi rompo con domande idiote, ma ho notato una cosa che non mi
spiego: siccome ho fatto un programmino che provoca errore irreversibile, ho
pensato che si trattasse dell'utilizzo di argv (la prima volta che lo
faccio..) e ho scritto, per verifica:
printf("%s,  %s,  %s\n", *argv[1], *argv[2], *argv[3]);
Secondo me questo era giusto, perché il printf stampa ciò che è contenuto in
una variabile (ad esempio, se si ha una variabile normale int y, e si fa
printf ("%d\n",y); stampa il valore di y), e se mettevo argv[1]ecc, senza
l'asterisco, pensavo che mi
avrebbe stampato indirizzi, e non valori, essendo argv[] un puntatore. Così
non fu.
Il programma non andava, e non appena ho eliminato gli asterischi ha
funzionato.
Ma io non ho capito perché!!
Chi mi aiuta?
Grazie,
Zeppe

argv[1] contiene un puntatore e non l'argomento, cioe'
argv[1] ------> stringa argomento memorizzata chissa' dove...
argv[2]------> idemo come sopra
La printf vuole un puntatore per una stringa, quindi passandogli
semplicemente argv[1] fai proprio questo.
Se invece gli piazzi *argv[1] gli invii "l'oggetto puntato da", quindi il
primo carattere della stringa e non il
suo indirizzo.
Lo so, i puntatori sono un casino...
Davide

 printf("%s,  %s,  %s\n", *argv[1], *argv[2], *argv[3]);
No, cosě richiedi di stampare delle stringhe mentre invece passi dei
caratteri (infatti dereferenziare dei puntatori a carattere significa
prendere il primo carattere da essi puntato).
EMG

procedimento un po' strano...
Esatto, e non e' tanto 'strano', lui ti alloca lo spazio in memoria per la
stringa in modo che ogni carattere segua il precedente, quindi se vuoi
'scorrere' la stringa parti dal primo e vai... e per partire dal primo lui
vuole l'indirizzo di memoria. Per la cronaca, la stringa e' conclusa da un
carattere 0 che viene aggiunto automaticamente dal compilatore con la
dichiarazione, e' li' che la printf si ferma...
Davide

Newsgroup: it.comp.lang.c
Titolo: domanda forse stupida

Come faccio a leggere da un file di testo i caratteri e memorizzarli in un
array,non  sapendo la grandezza o lunghezza del del file.txt?
SaN

array,non  sapendo la grandezza o lunghezza del del file.txt?
Usi un array temporaneo di tot caratteri e un realloc per un puntatore
da utilizzare ogni volta che superi i tot caratteri in lettura.

 array,non  sapendo la grandezza o lunghezza del del file.txt?
Potresti ricavare la lunghezza del file di testo con fseek/ftell, e
poi allocare un array della dimensione del file. Attento che con file
grossi potresti avere dei problemi.
--
 Ciao, Bianco.
 Reply to 
luca....@tiscalinet.it

  Ciao, Bianco.
La lunghezza in byte non corrisponde necessariamente al numero di 
caratteri del testo. C'e' il marcatore di EOL che puo'
essere di uno o due caratteri o anche nessuno. Dipende dal s.o. 
-- 
Francesco P. Lovergine  f.lovergine AT 
iesi.ba.cnr.it

 essere di uno o due caratteri o anche nessuno. Dipende dal s.o. 
... non ci avevo pensato... sai com'e', uso linux e li EOL e' un solo
carattere, quindi non ci sono problemi ;-)

Newsgroup: it.comp.lang.c
Titolo: Thread

Ciao ragazzi,
avrei un problema.
Il codice di sotto presenta 2 problemi : 
1) Una volta creati n thread (le variabili Thread le memorizzo in un
 array ma il codice l'ho semplificato) vorrei ammazzarne poter essere libero 
di killarne qualcuno da main. A tal proposito ho usato pthread_cancel ma 
non me lo ammazza -> Suggerimenti ? 
2) I thread eseguono un ciclo infinito fin quando scadono i 5 secondi del 
main e allora il processo termina con tutti i suoi thread. Il problema č 
che dopo aver stampato il primo elemento del primo thread, stampa il 
secondo elemento del secondo thread e poi stampa gli elementi del terzo 
thread fino allo scadere dei 5 secondi. 
Vi ringrazio dell'eventuale aiuto.
____________________________________________________
void main()
{
....
pthread_setconcurrency(iNumThread);
....
//Faccio il ciclo per tutti i thread da creare. ....
hread_create(&pthread_var, NULL, (void*) thread_func,(void*)index);
...
// Li detacho...
pthread_detach(pthread_var);
.....
//Supponiamo che voglio ammazzare un thread, credo che si faccia : 
pthread_cancel(pthread_var);
sleep(5);
}
// Nella Funzione thread_func
void thread_func()
{
  // Per poter essere cancellato.       
  pthread_setcancelstate(PTHREAD_CANCEL_ENABLE ,NULL);
  pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);
 
  while(1)
    printf("PROVA..... \n");
}

 [CUT]
linux? it.comp.os.linux.development (se non ricordo male), qui si parla 
solo di C standard.
- Mat/Tia che ritorna rompendo subito i coglioni a qlc :P

Newsgroup: it.comp.lang.c
Titolo: Campionamento di segnali

Esistono funzioni in c che permettono di stabilire, ad esempio, la frequenza
di un segnale mandato in ingresso alla scheda audio?

di un segnale mandato in ingresso alla scheda audio?
no, bisogna che te li fai... e cmq posta la domanda al gruppo + adatto
in base al s.o. che vuoi utilizzare
Antonio

Antonio Mazzeo wrote:

Ok, grazie, pensavo esistessero in c standard...
-- 
[D]

Ok, grazie, pensavo esistessero in c standard...
Il C standard e' pensato per sistemi che non hanno nemmeno il monitor,
figurati la scheda audio :)
-- 
Mox

di un segnale mandato in ingresso alla scheda audio?
Non esistono in nessun linguaggio !
Se devi campionare un segnale in ingresso, devi conoscerne a priori la
frequenza (e impostare l'ingresso di conseguenza).
Se invece quello che intendi e' fare un'analisi del segnale
campionato, allora cerca con qualche motorino FFT (Fast Fourier
Transform).
ciao, acc.   
a...@libero.it

 di un segnale mandato in ingresso alla scheda audio?
No, non esistono.
Puoi fare la FFT (esistono un sacco di realizzazioni dell'algoritmo)
ma devi sapere la frequenza di campionamento altrimenti il risultato č
normalizzato
ciaociao
laura
Newsgroup: it.comp.lang.c
Titolo: FAQ 4 - versione definitiva - numero -> stringa

3d - Come faccio a convertire una variabile numerica in una stringa?
Si utilizza la funzione :
int sprintf(char *s, const char * format, ...) definita in stdio.h
Esempio:
sprintf(stringa1,"%d",numerointero);   /* NB stringa1 è array di char,
numerointero è int */
sprintf(stringa2,"%f",numerodecim);     /* NB stringa2 è array di char,
numerodecim è float */
Il metodo sopra descritto è standard, e quindi preferibile perché portabile
su qualunque architettura, ma non è l'unico.
Esistono estensioni specifiche dei vari compilatori che permettono di
ottenere lo stesso risultato. Per facilitare la ricerca nell'help del
proprio compilatore si segnalano, a titolo d'esempio, le funzioni itoa(),
ultoa() per l'ambiente DOS/Windows.
--
Marco Coppo
University Of Sheffield

 numerodecim è float */
...o double.
Parlare di
   snprintf() 
?
Ciao ciao,
Andrea
-- 
"...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and 
 the Ugly)."
(by Matt Welsh)

 ?
Non è (ancora) standard.
EMG

 Non è (ancora) standard.
Neanche nella nuova versione ?


Sono daccordo anche io con EMG, hai fatto un ottimo lavoro( ho visto anche il
sito :) anche se con netsacpe non mi funge molto bene ,non so perche' )
Credo si possano cominciare a mandare su 
www.programmazione.it
, e poi
aggiornarle direttamente da li.
Ivan Molella

 Neanche nella nuova versione ?
Intendi nel C9X? Non lo so, forse si ma non mi pare sia stato già
approvato, giusto?
EMG



Si, e' stato approvato.  Preparatevi a convivere con nuovi attributi
come "restricted", coi bool, coi numeri complessi e con qualche header
file in piu'...
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Univ. of Padova, Dept. of Physics - Padova, Italy            
lor...@pd.infn.it
Newsgroup: it.comp.lang.c
Titolo: ciclo for interrotto

Ho un ciclo for che legge da file che si blocca costantemente alla quinta
iterazione..ne dovrebbe fare almeno 6 (i<=7) eppure si blocca regolarmente
alla 5 non leggendo l'ultima riga del file.
Non riesco proprio a capirne il motivo..cmq per sicurezza ecco il codice:
PORTA  *CreaStruttura (FILE *f, int n) {
            PORTA *p;
            int i;
            rewind(f);
            p=(PORTA*)malloc(n*sizeof(PORTA));
            for (i=0;i<=n,++i) {
                               printf("%i",i);
                               fscanf (f, "%i %s", &p[i].num,p[i].tipo);
                               CreaListaIngressi (&(p[i].punt),f);
                               printf ("%i",i);
                       }
                   return p;
   }
 alla sesta iterazione la seconda printf stampa 5 (i=5) ma poi quando i
diventa pari a 6 la prima printf non lo stampa come se uscisse dal ciclo for
per i=5...
--
se c'è scritto Microzozz  non funziona....


I'm not prejudiced, I hate everyone equally.


non credo che compilerebbe cosě.

 non credo che compilerebbe cosě.
hai ragione ;-))) infatti dopo ci ho provato e il gcc non ne ha voluto
sapere ..... 
vabbe' ... ho detto una stron***a ...
sorry about ;-)))


            for (i=0;i<=n,++i) {
devi togliere l'uguale
Ciao
Onof

 devi togliere l'uguale
ehehe..magari fosse cosi semplice..l'uguale non c'era prima..l'ho messo io
dopo per vedere se si bloccava ancora..e si blocca

scorpion wrote in message ...

Ciao Scorpion,
ci faresti un favore se postassi anche la definizione del tipo PORTA e il
file da cui stai leggendo.
Penso che dipenda tutto da questi 2 fattori.
La scanf (fscanf, scanf ecc...) sono un pochino pignole e permalose....
Maurus

    }
Scusa, ma la stampa degli interi non si fa con "%d" ??

 Scusa, ma la stampa degli interi non si fa con "%d" ??
mi sono documentato...sorry...come non detto





ciao 


per favore nelle printf all'interno del for potresti farti stampare anche n


non vorrei che da qualche parte fosse modificato.




ciao







                                fscanf (f, "%i %s", &p[i].num,p[i].tipo);
Hai provato a mettere l'operatore d'incremento postfisso invece che
prefisso?
Del tipo:
for(i=0;i<=n;i++) {
        .....;
}
Nel modo in cui l'hai scritto tu, il contatore i viene prima aumentato e poi
viene eseguito il ciclo. Invece scrivendo i++ viene prima eseguito il ciclo
e poi aumenta i.
Non l'ho provato, ma dovrebbe essere questo il problema.
Ciao ciao :-)
estr...@libero.it
estr...@tiscalinet.it
http://web.tiscalinet.it/tempo_libero/index.html

 e poi aumenta i.
Non e' vero.
-- 
 Ciao, Bianco.
 Reply to luca.bianco (at) 
tiscalinet.it

 --
Ha ragione, ma del resto avevo avvertito di non aver provato la cosa.
Peccato che tu non hai inserito anche quella riga :-)
Però a questo punto non so dov'è l'errore. In teoria dovrebbe essere
corretto come aveva scritto Scorpion.
Ciao ciao :-)
Newsgroup: it.comp.lang.c
Titolo: riconoscere overflow

 non portabile?
non necessariamente il C di da abbastanza strumenti per crearti una
"libreria" per gestione di numeri di precisione arbitraria.
Tommy

 mi pare funzionare....
a me pare funzionante, anche se poiché penso che 'true' valga '1', al
posto di 'return 1' dovrebbe mettere 'return 0'

 posto di 'return 1' dovrebbe mettere 'return 0'
beh, una modifica non da poco ;-)
Ad ogni modo non mi pare ugualmente funzionante nel 100% dei casi.
Tommy

 c'è un riporto?
Non in maniera standard.

 Era questo il problema oppure altro che mi sfugge? Se altro, cosa?
no, in effetti corrette le due linee sbagliate funziona.
Tommy
Newsgroup: it.comp.lang.c
Titolo: passaggio array multidimensionale

qualcuno mi sa dire perche' non riesco a compilare questa funzione?
il compilatore mi da questo errore: invalid use of array with 
unspecified bounds.
se invece includo le dimensioni nella dichiarazione funziona tutto, 
pero' io vorrei fare una funzione generica, che funzioni con array di 
qualunque dimensione.
void init_field(struct cell b_field[][], int size_x, int size_y)
{
    int x,y;
    for(x=0;x<size_x;x++)
       for(y=0;y<size_y;y++)
       {
          b_field[y][x].ptr_inhab=NULL;
          b_field[y][x].ground_type=GT_GROUND;
          b_field[y][x].height=0;
       }
}

 }
Se il compilatore č C99-compliant, dovresti poter fare cosě:
void init_field(int size_x, int size_y, struct cell
b_field[size_y][size_x])
{
   /* Codice come l'hai scritto tu */
}
Altrimenti devi rassegnarti alla vecchia maniera:
void init_field(struct cell * b_field, int size_x, int size_y)
{
    int x,y;
    for(x=0;x<size_x;x++)
       for(y=0;y<size_y;y++)
       {
          b_field[y * size_x + x].ptr_inhab=NULL;
          b_field[y * size_x + x].ground_type=GT_GROUND;
          b_field[y * size_x + x].height=0;
       }
}
--
Cingar
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Ciao, quando ho avuto un problema molto simile al tuo ho fatto nel
seguente modo(la mia matrice era di tipo double):
1. nel main dichiaravo una variabile del tipo double **a;
2. tramite una funzione allocavo un area di memoria in grado di
immagazzinare
la matrice con dimensioni da me stabilite non a priori ma anche a
runtime
3. nell'intestazione della funzione a cui dovevo passare la matrice
scrivevo
void modmatrix(double **x)
utilizzando typedef struct cell CELL
l'intestazione della tua funzione la scrivi cosě:
void init_field(CELL**b_field, int size_x, int size_y);
IMPORTANTE:
nella funzione matalloc devi scambiare double con il tipo di variabile
che a te interessa.
void main () { 
 
	double **a; // nel tuo caso: struct cell **b_field 
	a = matalloc(1,3,1,3); // nel tuo caso: b_field = matalloc(1,3,1,3);
(matrice 3x3);
 
	la chiami in questo modo:
	init_field(b_field, 3, 3);
    teressa. 
	Con i tipi fondamentali a me funziona correttamente. Puoi anche
provarla se vuoi.
	}
Spero di possa servire.
 
 
* Questa funzione alloca u'area di memoria per una matrice quadrata di
ordine n
   gli indici variano da: i = rolow,1,2,...rowhigh; j =
collow,1,2,...colhigh.
   Gli elementi sono inializzati a zero */
double **matalloc(int rowlow, int rowhigh, int collow, int colhigh) {
	int k;
	double **x;
 
	x = (double **) calloc((unsigned)(rowhigh-rowlow +1),
sizeof(double*));
	if(x==NULL) {
		fprintf(stderr, "unable to allocate memory.");
		exit(1);
	}
	x -=rowlow;
	for(k=rowlow; k<=rowhigh; k++) {
		x[k] = (double *) calloc((unsigned)(colhigh-collow+1),
sizeof(double));
		if(x[k] == NULL) {
			fprintf(stderr, "unable to allocate memory.");
			exit(1);
		}
		x[k] -= collow;
	}
	return x;
} // close matalloc function
Newsgroup: it.comp.lang.c
Titolo: Xor di un buffer con una key

Ho un punatore ad un buffer (LPCVOID lpBuffer)ho la lunghezza del
buffer (nBuffer) e una stringa di caratteri. Vorre fare la Xor in
mododa criptare il buffer. Come faccio? melo spiegate con del codice.
Rinagrazio chiunque voglia aiutarmi.

Rinagrazio chiunque voglia aiutarmi.
La teoria e' questa:
Dati XOR Chiave = Dati_cifrati
Dati_cifrati XOR Chiave = Dati
Chi critta e chi decritta deve avere la stessa chiave.
La chiave puo' essere lunga al massimo quanto il buffer, o minore
e replicata.
Un esempio:
http://www.codeproject.com/cpp/filecrypt.asp

Grazie Tutto ok!
Newsgroup: it.comp.lang.c
Titolo: Aiuto!

Ciao a tutti!
sono un "programmatore" anch'io! per lo meno sulla carta! Ho conseguito lo
scorso anno la maturità informatica, ma mi è stato insegnato a programmare
SOLO in Pascal (scandaloso, lo so!)
Vista la mia vergognosa (grazie alla scuola!) conoscenza dei linguaggi,  da
buon autodidatta mi sto cimentando sul C! Qualcuno mi sa consigliare qualche
buon compilatore? dove posso scaricarlo?
Grazie.

alamo714.up.to
sezione programmazione, ho messo il compilatore che uso io per l'UNI,
Borland Turbo C++ versione 1.01 per DOS, semplice ma fatto bene..

DEV c++ 4.0   
http://www.bloodshed.net/devcpp.html
CIAO SIMO

--
_________________________
www.sasim.cjb.net

buon compilatore? dove posso scaricarlo?
www.programmazione.it
, area C/C++, sezione link: trovi diversi
indirizzi di compilatori gratuiti.
Anto
--
Antonio Cuni, 19 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


Ad esempio, 
www.delorie.com
.
EMG

 buon compilatore? dove posso scaricarlo?
Aggiungo Lcc Win32 , www.cs.virginia.edu./~lcc-win32
-- 
Nick Belane
Togli NOSPAM per rispondermi

Newsgroup: it.comp.lang.c
Titolo: Manuale ANTLR italiano

Se a qualcuno interessa sto traducendo il manuale di riferimento di
ANTLR presente   su 
http://www.antlr.org/doc/index.html
E' ancora in versione primordiale (metà del primo capitolo e metà del
terzo), inoltre non sono molto bravo quindi qualunque aiuto è
benvenuto. Per ora è scaricabile con i programmi edonkey o overnet
all'indirizzo:
(in versione compressa RAR, 94kb):
<a href="ed2k://|file|[DOC PDF
ITA]_ANTLR_2_7_2_Reference_Manual_Italiano_ver_0_1.rar|96912|f19c65cb5800df8c620c4d0494e73992|">[DOC
PDF ITA]_ANTLR_2_7_2_Reference_Manual_Italiano_ver_0_1.rar</a>
(in versione PDF, 350Kb):
<a href="ed2k://|file|[DOC PDF
ITA]_ANTLR_2_7_2_Reference_Manual_Italiano_ver_0_1.pdf|139877|7469ab43a9e128833e239ee4f3cfb8db|">[DOC
PDF ITA]_ANTLR_2_7_2_Reference_Manual_Italiano_ver_0_1.pdf</a>

 (in versione compressa RAR, 94kb):
Rettifico: è scaricabile da 
http://www.sromano.com