mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c
Titolo: ancora su append

ciao,  ho ottenuto da un programma un file in output del tipo
1 1
2 3
4 5
ecc.
Ora devo produrre altri dati di output da un altro programma, e vorrei
che mi scrivesse il primo output nella prima riga, il secondo nella
seconda, ecc, accanto a quelli già ottenuti.
Come faccio? ho guardato un pò in giro ma nn ho capito molto!
grazie!

sophos wrote:

Non puoi. Quello che tu vedi come tante righe non è altro che un file con 
dentro:
1 1\n2 3\n4 5\necc.
E' ovvio che non puoi scrivere "in mezzo" ad un file esistente. La soluzione 
è però semplice:
1) leggi la riga (proprio come testo, senza interpretarne il contenuto), 
eliminando il fine riga. (s1)
2) crei le colonne che vuoi aggiungere con sprintf in una nuova stringa. 
(s2)
3) concateni s1 e s2 e le scrivi su un'altro file.
4) alla fine chiudi il file e lo rinomini con il nome di quello precedente.
-- 
Costantino Grana 

 Costantino Grana
ok.grazie!!

 Costantino Grana
ok.grazie!!
questo però mi sembra un pò macchinoso...dov'è lo spirito di
risparmio?

 risparmio?
macchinoso ? poche linee di codice.
E comunque, visto che non puoi allungare un file
scrivendogli "in mezzo", qualunque metodo
necessitera' di aprire un file, leggerlo, scriverne
un altro, etc.
Se tu stessi usando linux, allora potresti salvare il secondo file
senza rileggere il primo, e poi usare il comando standard
*paste* che prende per esempio due files F1 e F2 ed emette un
terzo file composto da :
prima riga di F1 concatenata con prima riga di F2
seconda riga di F1 conc. con seconda riga di F2
terza riga di F1 conc. con terza riga di F2
etc.etc.etc.
ciao,
g.

sophos ha scritto:

Può essere un po' complicato da gestire, ma oltre al metodo 
che ti hanno già suggerito, un'altra via praticabile consiste 
nel "riservare" spazio per il terzo valore al momento della 
prima scrittura. Per esempio, scriverai per ogni riga:
primo_valore secondo_valore spazii
il numero di spazii sarà sufficiente a coprire la massima 
lunghezza in caratteri del terzo valore.
Al momento della seconda scrittura, userai le funzioni ftell e 
fseek per spostarti nel terzo campo di riga e poi scriverai 
con fprintf. Aiuta e semplifica molto se tutti i campi hanno 
dimensioni fisse.
Ciao.

 risparmio?
Quale spirito di risparmio? Facendo come ti ho detto, che cosa non risparmi? 
Il problema č che non si puň scrivere in mezzo ad un file di testo, 
inserendo un po' di roba. Sarebbe diverso se il formato di output fosse 
binario e magari strutturato con degli indici. Ma in ogni caso, non vedo 
dove sia il problema a creare un nuovo file.
-- 
Costantino Grana
Newsgroup: it.comp.lang.c
Titolo: Esercizio con i vettori

Ciao a tutto il ng! Non riesco a sviluppare un algoritmo per risolvere 
questo esercizio proposto al capitolo 6 del Deitel&Deitel (I vettori). Per 
chi ha il libro, l'esercizio è il 6.10 a pag 216. Vorrei riuscirci io, per 
cui non mi date tutto il programma già fatto ma solo un aiutino su come 
svolgerlo. Per chi invece non ha il libro, l'esercizio è questo:
-------------------------
Utilizzare un vettore unidimensionale per risolvere il seguente problema. 
Un'azienda retribuisce i suoi venditori con delle provvigioni.
Un venditore riceve $200 la settimana più il 9 percento delle proprie 
vendite lorde portate a termine in quella settimana. Per esempio,
un venditore che faccia incassare $3000 di venduto lordo in una settimana, 
riceverà $200 più il 9 percento di $3000, ovverosia un totale
di $470.
Scrivete un programma C utilizzando un vettore di contatori che determini 
quanti venditori abbiano guadagnato una retribuzione compresa in
ognuno dei seguenti intervalli (supponete che la retribuzione di ogni 
venditore sia troncata a una somma intera):
        1. $200 - $299
        2. $300 - $399
        3. $400 - $499
        4. $500 - $599
        5. $600 - $699
        6. $700 - $799
        7. $800 - $899
        8. $900 - $999
        9. $1000 e oltre
-------------------------

Nessuno mi aiuta?


 Nessuno mi aiuta?
Sinceramente non riesco a vedere in cosa consiste la
difficolta', comunque:
Allora hai un vettore di int con 9 posizioni (da 0 a 8)
per contare quanti venditori sono nella classe (da 1 a 9).
allora usi un vettore di int di 9 posizioni:
int Conta[9] ;
lo azzeri inzialmente  for (i=0; i<9; i++) Conta[i]=0;
poi assumi (per esempio)
che la vendita lorda del j-esimo venditore sia Lordo[j]
e fai un ciclo sui venditori.
Nel ciclo sui venditori calcoli la retribuzione del venditore,
(int Ret; ) troncata ad un intero:
Ret = (int) (200+0.09*Lordo[j]);
Questo valore se ti interessa lo memorizzi in un
vettore opportuno (tipo Retribuz[j] = Ret; )
altrimenti lo usi solo per aggiornare il contatore
opportuno delle classi di retribuzione.
Ora, dato Ret si tratta solo di stabilire in quale
classe ricade (classi numerate da 0 a 8, anche
se esteriormente saranno considerate da 1 a 9).
Puoi farlo in diversi modi.
Per esempio prima controlli se Ret >= 1000 nel
qual caso la classe e' la 8. Se cosi' non e',
siccome le classi partono da 200 e vanno a step di 100,
basta che fai (Ret-200)/100 dove la divisione e'
intera quindi per 800 mi da 600/100=6 giusto e per 899 mi da
699/100 = 6 ancora giusto.
Quindi puoi scrivere
LaClasse = (Ret >= 1000  ? 8 : (Ret-200)/100);
o se preferisci:
if (Ret >= 1000) LaClasse=8; else LaClasse=(Ret-200)/100;
e poi incrementi il contatore corrispondente:
Conta[LaClasse]++;
e ripeti il ciclo sul successivo venditore.
ecc.ecc.ecc.
g.
Newsgroup: it.comp.lang.c
Titolo: Problema col compilatore C 5.02 della Borland

Buongiorno a tutti
scrivo un programma in C col compilatore 5.02 della Borland, lo compilo,
eseguo e tutto Ok. Poi lo modifico un pņ, lo rieseguo e il compilatore mi
ripropone la vecchia versione. Cioč in Run va lo stesso programma di prima,
per sempre.
Come faccio a fargli eseguire la nuova versione?
Grazie mille
B.

Non conosco quel compilatore, ma se usi un IDE per lo sviluppo credo che
tu debba cercare una voce tipo "Rebuild", e non semplicemente far
eseguire il tuo codice, alrimenti l'ambiente andrā semplicemente alla
ricerca dell'eseguibile per lanciarlo.
-- 
Quando noi ignoranti eravamo di pių, tutto era pių bello...
(A. Celentano)
Per rispondermi in privato, prima togli l'immondizia dalla testa ;)

 Per rispondermi in privato, prima togli l'immondizia dalla testa ;)
grazie. Conosci un buon, semplice compilatore C?
Grazie

Beh io in genere uso gcc, a volte smanetto coun un semplice editore di 
testo e poi vado da riga di comando (ma eseguo programmi con pochi file 
header e poichi file .c) oppure se proprio non mi va di smanettare da 
riga di comando uso Dev-cpp.
-- 
Quando noi ignoranti eravamo di piů, tutto era piů bello...
(A. Celentano)
Per rispondermi in privato, prima togli l'immondizia dalla testa.

con gcc e make gestisci comodamente anche programmi non piccoli :)


> con gcc e make gestisci comodamente anche programmi non piccoli :)
Beh si ma bisogna farci un po' la mano :)

Newsgroup: it.comp.lang.c
Titolo: domandina

Supponiamo che abbia un programmino di quaesto tipo:
#include..........
struct parola {
char parola[20];
char trovata;
}
void carica parole( struct parola*);
main()
{
struct parola word[100];
carica parole (word);
}
void carica parole (struct parole *p)
{
suppongo di leggere le parole da un file e' metterle in un vettore BUF
adesso voglio copiare le parole che vado leggendo nel campo parola del
vettore di struct word
strcpy(p[i]->parola,buf);   E' GIUSTO??????
}
in poche parole come si accede ai vari campi di una struct che e' stata
passata dal main attraverso il puntatore, e poi e' giusto passarla cosi o
esiste qualche maniera piu' efficiente??
Grazie per le risposte

esiste qualche maniera piu' efficiente??
Direi che e' un ottimo metodo.
-- 
Mox
"Trust the programmer."
"Don't prevent the programmer from doing what needs to be done."
"Keep the language small and simple."
"Provide only one way to do an operation."


PRIMA DI TUTTO GRAZIE DELL'AIUTO.
DATO CHE E' SBAGLIATO IL PASSAGGIO CON IL PUNTATORE COME DOVREI FARE??????


Io non voglio utilizzare un array di puntatori a struttura, voglio
utilizzare un puntatore al vettore di stuct per inserigli i dati, cosa devo
cambiare nel listato precedente, grazie di nuovo!!

DATO CHE E' SBAGLIATO IL PASSAGGIO CON IL PUNTATORE COME DOVREI FARE??????
Non hai capito il senso della risposta: il passaggio di parametri e'
giusto, quello che sbagli e' l'operatore all'interno della funzione.
Fai solo la correzione che ti ho detto: nella funzione anziche'
l'operatore "->" usa l'operatore "." e tutto si sistema.


Scusa Mox ti volevo chiedere un altra cosa, se dal main passo ad una
funzione 2 puntatori a due stringhe
void carica_testo ( char *t, char *tp)
{
se voglio copiare la stringa puntata da tp nella stringa puntata da t la
sintassi dello strcpy e' la seguente??
strcpy ( t,tp)
grazie!

strcpy ( t,tp)
Sì
-- 
Marco Barisione (ICQ 84277092)
Newsgroup: it.comp.lang.c
Titolo: void e return;

Salve a tutti
Sto lavorando su di un progetto consistente in Ansi C di un paio di mega
creato da altre mani e mi trovo molto spesso all'ultima riga nelle
funzioni che ritornerebbero un void un instruzione
return;
Ecco... ma è inutile? Dato che la funzione è prototipata per ritornare dei
void, oppure serve per rendere il codice più portabile, oppure ancora più
veloce?
E' solo una curiosità... giusto per sapere, poichè me ne trovo a iosa.
Grazie in anticipo per eventuali chiarimenti.

 Grazie in anticipo per eventuali chiarimenti.
Se non sbaglio da qualche parte ho letto (forse proprio sul k&r) che
l'uscita da una funzione co una graffa chiusa e' un uscita sporca.
Non che cambi qualcosa, ma e' piu' leggibile la funzione , ed e' piu'
"pulita". Potrei anche sbagliarmi pero'.
-- 
Qualsiasi
"We all know Linux is great...it does infinite loops in 5 seconds." Torvalds
http://www.gnu.org/philosophy/no-word-attachments.it.html

 veloce?
E` esattamente la stessa cosa.
-- 
Enrico `Trippo' Porreca

...

Buonasera,
anche per quanto ne so io, mettere al termine di una funzione che
restituisce un tipo void l'istruzione return o meno è pressoché
indifferente. Dal punto di vista didattico, tuttavia, spesso si
consiglia di non ometterlo perché aumenta la leggibilità del codice:
nella programmazione strutturata DOC, se non ricordo male, dovrebbe
esserci uno ed un solo punto di uscita dalla funzione (evidenziabile,
appunto, con l'istruzione return al fondo della stessa).
Bye!

 appunto, con l'istruzione return al fondo della stessa).
Non e' una imposizione, e' una regola di buon senso, come potrebbe
essere buon senso mettere qualche return di piu' ed eviatre una catena
interminabile di if() al fine di avere un unico punto di uscita.
Opinione personale...
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Newsgroup: it.comp.lang.c
Titolo: Ricerca di processi

Esiste una funzione che mi permette di conoscere
tutti i processi attivati e le loro rispettive dimensioni
in memoria????
Grazie a tutti
    \ | /
    (@ @)
-o00-(_)-00o------------------------------------------------------------------------------------------------
Benedetto Santarella
--------------------------------------------------------------------------------------------------------------
 Home Page ==> 
http://www.santarella.too.it
 
 Email :  Benedetto.Santarella@-NOSPAM-libero.it         
 


non mi risulta che la libreria standard di C abbia alcuna funzione del
genere;
ogni sistema operativo ha il suo bel set di funzioni per ottenere quanto da
te richiesto;
ti suggerisco di rivolgerti su newsgroup più specifici per la programmazione
sotto il sistema operativo che ti interessa;
ciao
Newsgroup: it.comp.lang.c
Titolo: ancora dal Basic al C

Salve a tutti, e devo far stampare ad un programma C un output formattato ,
che comprende
stringhe alfanumeriche , ma devo farle stampare sempre in un punto
prefissato dello
schermo , c'è qualcuno che sà dirmi come posso fare??
Non mi serve a nulla veder scorrere sullo schermo una serie interminabile di
caratteri alfanumerici, con il Basic potevo farlo , ma con il C??
Mi sembra strano che il C , che è un linguaggio ad alto livello  confrontato
al Basic ,  non si possa
fare una cosa tanto semplice.
Nelle FAQ su 
programmazione.it
  , ci sono tante risposte ma , almeno se non
erro , nessuna tratta
la stampa sul video ; non è il caso di aggiungervi qualchecosa in merito .
Grazie 1000 a tutti
Ciao :-) Roberto

al Basic ,  non si possa fare una cosa tanto semplice.
Eh, eh, e' qui che casca l'asino ! ;)
Il Basic non possiede uno standard, il C si'.
Questo significa che a rigor di standard non esiste uno schermo e non
esistono, conseguentemente, funzioni legate allo schermo.
Questo e' ben diverso dal dire che in C non e' possibile scrivere a
video (a che servirebbe un linguaggio del genere ?), ma vuol dire che
a prescindere dalle implementazioni del linguaggio non e' possibile
dirti quale funzione utilizzare, quindi devi rifarti alle librerie del
tuo compilatore. A proposito, che compilatore usi ?

 Il Basic non possiede uno standard, il C si'.
Ehi, bentornato nei tuoi soliti panni. Eri tu sia Ippopapero Acquatico
che TJK, dico bene? ;-)
EMG

you wrote:

Uh ? Chi sono costoro ? ;)

stop . sono stato chiaro?
Sissignore. Comandi Signore.
p.s.: prendi la vita piu' allegramente, ne guadagni in salute ;)
Newsgroup: it.comp.lang.c
Titolo: Cosa sono questi messaggi d'errore?

Salve a tutti, risolti i problemi con gli output, ho provato questo
programma:
#include <stdio.h>
main()
{
 printf("Salve mondo\n");
}
Il programma viene eseguito tranquillamente ma il compilatore mi da questi
due warning:
Warning c:\lcc2\bau.c: 3 no type specified. Defaulting to int
Warning c:\lcc2\bau.c: 7 missing return value
Compilation + link time: 0.8 sec, Return code: 0
Cosa significano quei due Warning?
Grazie
----------------------------------------------
ICQ NUMBER: 147421455
http://www.posieidon.3000.it
http://posieidon.supereva.it

 c:\lcc2\bau.c: 7 missing return value Compilation + link time: 0.8 sec,
riga 7 "}" manca il valore di return che una funzione int deve avere
risolvi mettendo
return 0;
prima della }


Salve a tutti, risolti i problemi con gli output, ho provato questo
programma:
#include <stdio.h>
main()
{
 printf("Salve mondo\n");
}
Il programma viene eseguito tranquillamente ma il compilatore mi da
questi
due warning:
Warning c:\lcc2\bau.c: 3 no type specified. Defaulting to int
Warning c:\lcc2\bau.c: 7 missing return value
Compilation + link time: 0.8 sec, Return code: 0
Cosa significano quei due Warning?
Grazie
----------------------------------------------
ICQ NUMBER: 147421455
http://www.posieidon.3000.it
http://posieidon.supereva.it
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 due warning:
prova cosi'
-- 
ZeD
Io, solo io, sempre io, anche io, nient' altro che io, proprio io

Compilation + link time: 0.8 sec, Return code: 0
prova questo, ma non compilarlo su un sistema non-ASCII.
#include <stdio.h>
#define _ putchar
 int main(){int c
  =0110;_(c);c+=
   29;_ (c);c+=
    7;_(c);_(
     c);c+=3;
      _(c);c=
     0x20;_(c
    );c=0127;_
   (c);c+=24;_(
  c);c+=0x3;_(c);
 c-= 6;_( c);c -=
010 ;_(c);c=0x21;_(
c);_ (10);return 0;}
-- 
Ciao, Giuseppe

 Warning c:\lcc2\bau.c: 7 missing return value
Non c'è un return con un valore.
Newsgroup: it.comp.lang.c
Titolo: Come installare il DJGPP?

Mi sono scaricato i file che mi interessavano, li ho decompressi in una
cartella che ho chiamato DJGPP, siccome ho Windows ME ho modificato
l'autoexec.bat aggiungendo la riga "SET DJGPP=C:/DJGPP/DJGPP.ENV" e al PATH
ho aggiunto "C:\DJGPP\BIN".
Bene, ora non so più cosa fare. Mi aiutate!
Perchè ho dovuto modificare l'autoexec?
Che devo fare per lanciare il DJGPP?
Grazie
car...@ngi.it


Beh, dentro la directory bin hai i comandi disponibili.
gcc è il compilatore.
Il comando tipico è:
gcc prova.c -o prova.exe -lm (se usi la lib. matematica)
ld è il linker, etc.
Guarda la doc.
I comandi sono suppergiù quelli che avresti sotto Linux. Ad ex. per avere
l'help in linea devi digitare:
gcc --help
Naturalmente tutto ciò da prompt di dos.
Per editare i files ti serve un editor.
Ne trovi molti free e share che colorano la sintassi.
Disponibili in djgpp, mi sembra che ci sia emacs e rhide (questo somiglia
molto all'editor del turbo c).
Bye

 Che devo fare per lanciare il DJGPP?
Scrivi un programma, ossia un file di testo con estensione .c se e' in C, e
lo compili usando : gcc nomefile.c -o nomefile.exe
Questo nella piu' semplice delle ipotesi, perche' il gcc ha un sacco di
opzioni, ma potrebbero non interessarti all'inizio.
-- 
 Ciao, Bianco.
 Reply to luca.bianco (at) 
tiscalinet.it
Newsgroup: it.comp.lang.c
Titolo: scandir

Ho ancora una domanda su scandir. Nella documentazione ci sono le info sui parametri da passare, il valore ritornato ecc.
int scandir (const char *, struct dirent **, int (*select) (struct dirent *), int (*compar) (const void *, const void *));
Io vorrei sapere come realizzare il filtro del terzo parametro, chessò, per visualizzare solo file mp3 e così via. Non sono riuscito a trovare info in merito.
Thanx
Giancarlo Rosso.

 chesso`, per visualizzare solo file mp3 e cosi` via. 
int is_mp3(const struct dirent *dent) {
	/* Controlla il campo dent->d_name per vedere se finisce per
	   .mp3 */
	if (finisce_con_mp3)
		return 1;
	else
		return 0;
}
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
Il piu` bel momento dell'amore e` quando ci si illude che duri
per sempre; il piu` brutto, quando ci si accorge che dura
da troppo.

Newsgroup: it.comp.lang.c
Titolo: Dissertazioni (o meglio lezioni) su fprint-fscanf

Salve a tutti,
se faccio:
 fprintf(file, "%d%f", 2, 3.14);
mi ritrovo, nel file creato, questo:
  23.14
che, ovviamente, non riesco poi a leggere con fscanf ( a meno che non
gli dica espressamente, con %1d, che l'int e' di 1 carattere, pero'
questo in generale non e' noto).
Allora ho visto che se separo con uno spazio:
 fprintf(file,"%d %f",2,3.14);
mi ritrovo, nel file creato, questo:
 2 3.14 
che fscanf riesce a leggere tranquillamente sia cosi':
 fscanf(file,"%d %f",&x,&y)
che cosi':
 fscanf(file,"%d%f",&x,&y)
Cioe', in fscanf, diventano irrilevanti gli spazi tra i descrittori di
tipo.
Deduco allora che, almeno con fprintf, e' necessario usare gli spazi
tra i descrittori di formato.
Giusto ?  
Andiamo oltre: le stringhe !
se ho:
 char s[13];
se faccio:
 fprintf(file,"%s","ciao");
mi ritrovo, nel file creato, questo:
 ciao
che leggo con fscanf:
 fscanf(file,"%s",s)
Ma se la stringa contiene spazi ? Ad esempio,se faccio:
 strcpy(s,"ciao a tutti");
 fprintf(file,"%s",s);
poi come la leggo ?  Devo per forza fare:
 fprintf(file,"%12s",s);
e poi 
 fscanf(file,"%12s",s); ?
Giusto ?
Inoltre ho visto che mi conviene comunque fare:
 "%-12s"
per poter scrivere/leggere la stringa giustificata a sinistra (qualora
per esempio essa fosse solo "ciao a")
Giusto ?
Grazie a chiunque mi chiarisca le idee.
 


The great question that has never been answered and which I have not
yet been able to answer despite my thirty years of research into the
feminine soul is: WHAT DOES A WOMAN WANT?
                -- Sigmund Freud

 fgets (buffer, 150, file);
Oppure, se possibile:
char buffer [150];
fgets (buffer, sizeof( buffer ), file);
Ovviamente questo non funziona se buffer č passato come parametro in
quanto, in quel caso, decade in un puntatore e quindi sizeof()
restituirebbe la dimensione del puntatore, non dell'array.
EMG

 EMG
ciao ciao

Newsgroup: it.comp.lang.c
Titolo: Uno strano problema su gcc

Ciao a tutti, stavo facendo questo esercizio:
/*Fig. 6.21:	fig06_21.c
 * Inizializzare i vettori multidimensionali*/
 #include<stdio.h>
void printArray(const int a[][3]);/*Prototipo di funzione*/
int main(){
 	/*Inizializza array1, array2, array3*/
 	int array1[2][3]={{1,2,3},{4,5,6}};
 	int array2[2][3]={1,2,3,4,5,6};
	int array3[2][3]={{1,2},{4}};
 	printf("Values in array1 by row are:\n");
 	printArray(array1);
 	printf("Values in array2 by row are:\n");
 	printArray(array2);
	printf("Values in array3 by row are:\n");
 	printArray(array3);
 	return 0;
 }
 void printArray(const int a[][3]){
 	int i;/*Contatore delle righe*/
 	int j;/*Contatore delle colonne*/
 	/*esegue un ciclo scorrendo le righe*/
 	for(i=0;i<=1;i++){
 		/*Visualizza i valori delle colonne*/
 		for(j=0;j<=2;j++){
 			printf("%d ", a[i][j]);
 		}
		printf("\n");
 	}
Quando vado sul terminale, lancio il seguente comando:
blacknet86@SGC:~/Documenti/Uni/Lab2/src$ gcc fig06_21.c -o fig06_21
fig06_21.c: In function ‘main’:
fig06_21.c:13: warning: passing argument 1 of ‘printArray’ from
incompatible pointer type
fig06_21.c:16: warning: passing argument 1 of ‘printArray’ from
incompatible pointer type
fig06_21.c:19: warning: passing argument 1 of ‘printArray’ from
incompatible pointer type
Come vedete il compilatore mi da 3 messaggi di errore, la cosa bella
ma che nn mi riesco a spiegare, è il fatto che il compilatore mi
genera lo stesso il file eseguibile e funziona pure!
Perciò volevo chiedervi come mai mi da errore visto che nn riesco a
capire che sta succedendo
grazie tnt


Quelli non sono messaggi d'errore, sono messaggi di warning, ovvero
*Attenzione*.
Solitamente, ma non sempre, indicano che tu stai facendo qualcosa di
non corretto logicamente, ma corretto sintatticamente.
In Italiano, tu puoi scrivere "la barca vola nel cielo".
Grammaticalmente/sintatticamente corretto, ma qualcuno potrebbe poter
pensare "Ma siamo sicuri che e' una barca e non un aeroplano?".
Quindi controlla che stai passando i parametri giusti alla funzione
(stai giocando con i puntatori, devi guardare bene i livelli di de-
refernza che usi).

Newsgroup: it.comp.lang.c
Titolo: dubbio su dichiarazione char[...]

ciao a tutti, ho un enorme dubbio su questa dichiarazione:
char buffer[BUFSIZE];
all'interno di una funzione.
purtroppo, usando C++, non uso da un pezzo i char e quindi sono un po' a
digiuno
posto che devo passare buffer ad una funzione solita di windows,
nella forma:
funzione(buffer, sizeof(buffer));
sarebbe meglio scrivere
char buffer[BUFSIZE]="";
o e' indifferente?
grazie!
--
Ciao by Allanon


I'm not prejudiced, I hate everyone equally.
Newsgroup: it.comp.lang.c
Titolo: Domanda (banale) sull'uso della free() e di malloc()

Ciao a tutti, mi sapreste spiegare perchè se alloco memoria ad un 
puntatore doppio creando una struttura immaginaria di questo tipo:
   0 1 2 3 4
0 x x x x x
1 x x x x x
2 x x x x x
(diciamo che alloco per il puntatore doppio tre array da 5 interi)
con il seguente codice C:
------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
int main( int argc, char **argv ){
int **v;
	v=malloc( 3 * sizeof(int*) );	/* alloco 3 stringhe di interi */
	*v=malloc( 5 * sizeof(int) );   /* alloco nella prima 5 interi */
	*(v+1)=malloc( 5 * sizeof(int) ); /* e nella seconda */
	*(v+2)=malloc( 5 * sizeof(int) ); /* e nella terza */
	*((*(v+1))+2)=3;
	printf("%d %d %d %d", v[1][0],v[1][1],v[1][2],v[1][3]);
	free(v+1);
	*(v+1)=malloc(5 * sizeof(int) );
	*((*(v+1))+2)=3;
	printf("\n%d %d %d %d", v[1][0],v[1][1],v[1][2],v[1][3]);
return 0;
}
------------------------------------
ottengo " segmentation fault "?
	ciao e grazie, rz
-- 
http://mrzac.altervista.org

 
Trovato il banale errore. Scusate per il disturbo.
	ciao, rz
-- 
http://mrzac.altervista.org

Newsgroup: it.comp.lang.c
Titolo: esame all'università--help!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

c'č qualcuno che puņ aiutarmi per l'esame su C ?=??=?=?=?=
grazie
LUKE

 c'č qualcuno che puņ aiutarmi per l'esame su C ?=??=?=?=?=
E come?  Suggerendoti il vecchio adagio "Aiutati che Dio t'aiuta"?  Di
certo non posso darti lezioni private ...
Posso solo dirti, nel newsgroup, di usare un buon testo: intanto
quello usato dal tuo professore e gli appunti che sicuramente avrai
preso frequentando (e, se non l'hai fatto, sbatti settantasette volte
la testa sul muro ripetendo il mantra "Ohi Ohi Mai Piu'").
Il testo migliore e' quello degli autori del linguaggio, Brian
Kernighan e Dennis Ritchie, "The C Programming Language" (anche
tradotto in italiano), che pero' richiede qualche conoscenza
preventiva (almeno le basi della programmazione); anche assai buono e'
il libro di Harbison e Steele, "C: a reference manual".
Se vuoi tentare sul web, ci sono un paio di tutorials interessanti:
quello di Steve Summit, 
http://www.eskimo.com/~scs/cclass/cclass.html
,
e quello di Tom Torf, 
http://members.xoom.com/tomtorfs/cintro.html
 .
Steve Summit mantiene la FAQ list di comp.lang.c, che vale senz'altro
una capatina (ma DOPO aver assimilato BENE il linguaggio):
http://www.eskimo.com/~scs/C-faq/top.html
 .
E ... in bocca al lupo.
-- 
Maurizio Loreti                      
http://wwwcdf.pd.infn.it/~loreti/mlo.html
Un. of Padova, Dept. of Physics - Padova, Italy          
lor...@padova.infn.it
Newsgroup: it.comp.lang.c
Titolo: Imparare il C\C++

Salve a tutti,
vorrei imparare il C\C++ (quale mi consigliate?) e cerco un manuale..
qualcuno può aiutarmi?
Anticipatamente Grazie
Angelo



Io ti consiglio il libro di Bertacca Guidi, molto chiaro e semplice. Parla
solo di C pero'.

 solo di C pero'.
Io ho poca esperienza. Sto imparando con "linguaggio C" di Bellini e Guidi.
Chi ci ha dato una scorta dei miei colleghi programmatori , ha detto che era
ben fatto..
A me piace perchè riserva in fondo ampie integrazioni del C con il web
Per adesso sono a pag. 200, su 450 pagine.
I puntatori e le funzioni sono un pò oscure per me...
Ciao
Nicola

...


 Stefano
azz... se non sono troppo impertinente me lo manderesti pure a me? te ne
sarei grato :)
cucca7...@gmail.com
senza NOSPAM ovviamente :)
grazie 1000
Dade

 Stefano
Grazie Mille, davvero gentile
Angelo
Newsgroup: it.comp.lang.c
Titolo: Dove trovo informazioni su jpg ?

Cerco informazioni sui file in formato JPEG e sugli algoritmi di
compressione e decompressione usati.
Grazie in anticipo per le informazioni

compressione e decompressione usati.
http://www.wotsit.org
 é il sito migliore per tutto
quel che riguarda i formati di file, in generale (in
questo caso immagino che ci troverai anche dei
puntatori ai sofisticati algoritmi di compressione
usati).
Alex

http:://
www.wotsit.org
Stefano.

 compressione e decompressione usati.
 
http://www.dcs.ed.ac.uk/~mxr/gfx/

Newsgroup: it.comp.lang.c
Titolo: Commentare macro

Domanda banale... non mi bastonate :-)
Spesso mi capita di definire delle macro di configurazione che 
abilitano/disabilitano certe feature del programma:
--- config.h ---
#define CONFIG_FEATURE1  /* Abilita la feature 1 */
#define CONFIG_FEATURE2  /* Abilita la feature 2 */
/*#define CONFIG_FEATURE3  /* Abilita la feature 3 */
...
---
Ho letto che i commenti C /* */ innestati non sono una buona cosa 
(splint, per esempio, normalmente dà un warning).
Allora voi come fate o cosa suggerite?

 --- config.h ---
#define CONFIG_FEATURE1 /* Abilita la feature 1 */
#define CONFIG_FEATURE2 /* Abilita la feature 2 */
#undef  CONFIG_FEATURE3 /* Abilita la feature 3 */
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   < 
http://giovanni.homelinux.net/
 >

 #undef CONFIG_FEATURE3 /* Abilita la feature 3 */
Semplice ed efficace :-)
Newsgroup: it.comp.lang.c
Titolo: Linguaggio C: come stiamo messi a grafica?

Salve a tutti,
approfitto ancora della vostra gentilezza:
esistono in C delle istruzioni che abbiano come effetto il disegnare linee,
curve, colori,, etc?
Avrei bisogno di aggiungere una stupidissima interfaccia grafica ad un
programmino che ho scritto.
Qualche consiglio?
P.S.
La piattaforma che uso č Suse Linux.
-- 
Posted from 
net145-210.mclink.it
 [195.110.145.210] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG


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

Usa Allegro...si tratta di una libreria abb. semplice da usare che permette
di implementare interfacce grafiche, creare giochi etc...č compatibile anche
con linux!
Ciao
Enrico S.
--
Webmaster della Pagina NON Ufficiale del SonyCRX100
SonyCRX120,  SonyCRX140E/S, SonyCRX100EX, HP8100
HP8200, HP9100 & HP9200
http://www.freeweb.org/computer/SonyCRX100/

 La piattaforma che uso è Suse Linux.
   La grafica rasterizzata non e` inclusa nello standard ISO. Tuttavia, 
per la tua piattaforma, esiste l'interfaccia grafica X Windows, per la 
quale puoi trovare un numero impressionante di librerie, toolkit e 
framework, a partire dalla X Lib fino a Gnome e Qt. Ti consiglio di fare 
qualche ricerca con queste parole chiave e di rivolgerti ad un 
newsegroup specifico per Linux.
-- 
Alla prossima,
Marco

 
Forse ti sto dicendo una cavolata, ma prova con Kdevelop (lo puoi 
scaricare), dovrebbe funzionare anche con i C normale.
Andrea

per la tua piattaforma, esiste l'interfaccia grafica X Windows, per la 
non era X Window?
Newsgroup: it.comp.lang.c
Titolo: [help] operazioni su file e memoria

Il problema postato ieri sta diventando più generale.
Ho seri problemi di comprensione riguardo la connessione che può esserci tra 
delle operazioni di lettura su file (e sua relativa chiusura) e su aree di 
memoria non interessate alla lettura (tantomeno alla chisura).
ho allocato lo spazio necessario per l'array di char contenuto in bits, in 
particolare all'inizio del file era definita la struttura...
typedef struct x {
        BIT_BLOCK *bits;
        RULE rule;
        struct x *next;
} state_action;
state_action *temp_sa = (state_action*) malloc(sizeof(state_action));
temp_sa->bits = (BIT_BLOCK *) malloc (blocks_in_world);
temp_sa->next=NULL;
...
...
Mi ritrovo aree di memoria modificate dopo una read del tipo...
     fread( temp_sa->bits , 1 , blocks_in_world, filectrl );
che vanno oltre a quella di bits. Come è possibile?
Inoltre se faccio una fclose del file mi si cancellano delle aree di memoria 
sempre dello stesso array del problema di prima.
Quindi la domanda non volge a volermi risolvere per forza il mio particolare 
problema, quanto piuttosto come è possibile che una fclose (per la fread 
posso anche essere io ad aver fatto casino con puntatori e malloc) 
influisca su il contenuto di un array. (in particolare azzera alcuni 
puntatori dandomi segm fault...e meno male che li ha azzerati altrimenti 
sai che casino...).
grazie... sono in stallo!
Please help me
ciao e grazie di nuovo a tutti.
-- 
__________________________________
"Ama e fai c'ho che vuoi".... 
__________________________________

 posso anche essere io ad aver fatto casino con puntatori e malloc) 
La spiegazione e' molto semplice: hai cannato qualcosa !
Gli errori commessi con puntatori & C. non sempre si manifestano
al momento dell'errore, ma spesso hanno effetti ritardati
(per esempio, per il semplice motivo che stai andando a scrivere
in una zona dove e' memorizzata un'altra variabile che verra' utilizzata
in seguito). Per esempio potresti aver sporcato la zona di memoria
dove vengono tenute le informazioni relative al file, e quindi la fclose
potrebbe causare problemi.
Per capire che errore hai commesso bisognerebbe vedere un esempio
minimale (ma completo!) di programma che ti da errore.
Se tu stai usando, per esempio, Borland C++ Builder, allora c'e' un tool
che si chiama CodeGuard che controlla a run time se stai facendo qualche
bischerata con puntatori o range degli array. Su altri sistemi non so !
ciao,
g.
Newsgroup: it.comp.lang.c
Titolo: Compilatore DJGPP

Che ne pensate del suddetto compilatore per c e c++?
Da quello che ho letto si tratta del porting del compilatore GCC di Linux su
Windows.
Dovrebbe essere completamente gratuito sia per scopi personali che
commerciali.
 
L'ho installato su windowsXP e sembra funzionare, ma ancora non ho provato
compilazioni complesse.
 
Ciao
 
-- 
Caronte
-- 
Inviato da 
Newsgate.Localinfo.IT
 Web Service
http://newsgate.localinfo.it

 commerciali.
E` gratuito se colui che te lo da` non te lo fa pagare. Se voglio, posso 
scaricarlo e venderlo a 12 mila euro. Allora se lo vorrai ottenere da 
me, non sara` gratuito.
Non fare confusione: `free software' significa `software libero', non 
`gratuito'. Il software libero non e` necessariamente gratuito.
Una volta che ce l'hai, allora si`: puoi usarlo `liberamente' (appunto) 
per scopi personali e commerciali.


-- 
  < 
http://www.reactos.com/
 >  Open source clone of Windows NT. Current
      Don't stand, REACT!      version 0.1.5. C, C++ and ASM developers
                               and beta testers are welcome!

 compilazioni complesse.
Va benone.

 ha scritto nel messaggio
news:f5e701fae033931a3...@newsgate.localinfo.it...

Newsgroup: it.comp.lang.c
Titolo: Trasposta di una matrice

Salve, sto cercando di svolgere gli esercizi da portare all'esame orale 
di Elementi di Programmazione. Uno di questi esercizi mi chiede di 
sviluppare la trasposta di una data matrice. Se lavoro su matrici 
quadrate ok, ma quando cerco di lavorare su matrici n*m il discorso si 
complica e non riesco a raggiungere l'obbiettivo. Avevo pensato ad una 
procedura tipo questa:
// trasposta
	int Trasposta[colonne][righe], i, j;
	for(i=0;i<colonne;i++)
		for(j=0;j<righe;j++) {
			Trasposta[i][j] = A[j][i];
		}
// ...
ma il codice non mi da in output i risultati sperati. Un aiutino?


L'aiutino e': la funzione "trasposta" di una matrice quadrata nxn ha 
come risultato una matrice quadrata nxn, mentre di una matrice non 
quadrata nxm ha come risultato una mxn, ovvero una matrice di dimensioni 
diverse.
Questo ti dice che non puoi usare la stessa matrice in input ed output 
della funzione, no...?
-- 
/**
  * Mattia Belletti - Undergraduate student @ 
cs.unibo.it
  * ICQ: 33292311   - email: 
mbel...@cs.unibo.it
  * IRC: BluShine   - site(s): 
http://cs.unibo.it/~mbellett
  * Linux registered user 299762 @ Linux registered machine 213003
  */

 // ...
-- 
asettico (aka Roberto) [
http://www.rossomaltese.it/
]
GPG fingerprint [ BA20 8C8D 7712 9D9A 57F3  A96A A7BE 905C 1CB9 26BA ]
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCS/IT/O d++(-) s:+>: a34 C++$ ULAVH*++$>++++ P+ L+>++++ E--- W++(-) N(++)
o? K-? w(---) !O M@ V@ PS+@ PE- Y? PGP->++ t+++ 5? X++ R tv+ b+ DI(+)
D++(---) G(-)>-- e>++++ h---() r++ y+++*
------END GEEK CODE BLOCK------

 procedura tipo questa:
è stata chiesta una cosa molto simile anche a me per un esame... e io
sapendo che tanto la prof non avrebbe mai guardato il codice e sapendo che
voleva solo che io stampassi la matrice trasposta ho fatto una cosa tanto
banale quanto idiota... ovvero scandivo le colonne e le stampavo come
righe...
for(int i=0 ; i<num_colonne; i++)
    {
    for(int j=0; j<num_righe; j++)
        printf("%d",matrice[i][j]);
    printf("\n");
    }
il codice l'ho scritto ora senza nemmeno provarlo, ma dovrebbe andare...
Ciao
Gnagno
Newsgroup: it.comp.lang.c
Titolo: AIUTO PER L'ESAME

CHI E' COSI' GENTILE CHE MI RISOLVE QUESTO TEMA D'ESAME VISTO CHE SONO
NEGATA, ANZI
INCAPACE A PROGRAMMARE IN C?
VE NE SAREI MOLTO GRATA E RICONOSCENTE..
CON AFFETTO LA VOSTRA MONICA! 
CIAO CIAO
Si consideri un villaggio turistico in cui i clienti vengono allogiati
in bungalow. per gestire le prenotazioni dei bungalow relative a una
certa settimana, la direzione del villaggio utilizza il file
bungalow.dat che contiene la lista di tutti i bungalow del villaggio;
In particolare, ciascun record di bungalow.dat, sarà rappresentato dalle
seguenti informazioni:
numero: un intero che individua univocamente il bungalow
posti: un intero che indica il numero di posti letto disponibili del
bungalow
servizi: un valore booleano che indica se il bungalow è dotato di bagno.
Scrivere un programma C che permetta una gestione automatizzata delle
prenotazioni. 
A questo scopo il programma deve:
1) a partire dal file bungalow.dat creare un vettore L dei bungalow del
villaggio (si supponga che i bungalow siano al massimo 100).
2) effettuare una prenotazione leggendo da tastiera il numero di posti
richiesti. Il programma deve cercare in L un bungalow (se esiste) che
soddisfi la richiesta del cliente ( numero posti >= del numero di posti
richiesti). Se il bungalow richiesto è presente in L, stampare sullo
standard output il numero di bungalow assegnato, altrimenti stampare un
messaggio di errore

 
[SNIPPATOTUTTO]
Prova almeno a scrivere tu una prima versione di soluzione e poi potrai
chiedere qui consigli su come correggerla e/o migliorarla.
Se fai fare tutto agli altri non imparerai mai.
Marco Guidi




come che risulti come Valeria Maroni e ti firmi Monica :)

studiare un po' ... o é troppa fatica  per una fanciula delicata come te ?



rotflllllllllllll
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*PgP Key : avaible.
*Icq  Uin  : avaible.
*Internet Exploder : dove vuoi inchiodarti oggi???
*OE : cosa vuoi postare postare postare postare oggi???
*Win9x : dove credi di andare oggi?
*Sito preferito => http:\\
www.spippolatori.com
.
*Ps: se mi volete scrivere in privato preferisco che lo facciate
  usando PgP!(Sempre che loi abbiate ;))
*Pps:l'indirizzo email è taroccato...per rispondere fatelo sul NG.Al massimo
vi
   contatto io in email.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Newsgroup: it.comp.lang.c
Titolo: Quale compilatore(un po' impastato!!!)

Vorrei provare i programmi che mi hanno dato da fare in facoltà su
Windows (su Linux c'è già Kdevelop) e ho installato il Borland 6
trovato su una rivista ma a parte le dimensioni (750 Mb !!!) è anche
un po' peso da usare,visto che io voglio solo provare qaulche semplice
applicazione in C. Mi consigliate qualche editor+compilatore semplice
da scaricare ...grazie

Ciao Ciccino, alle 17:07, sabato 8 giugno 2002, su it.comp.lang.c hai 
scritto:

Il djgpp. Prendilo da qui:
http://www.delorie.com/djgpp/zip-picker.html
-- 
My OS: Linux Red Hat 7.2
ICQ #147054457
Linux User #276372
Linux Machine #159118
Newsgroup: it.comp.lang.c
Titolo: info

cosa e' il miracle c compiler?
sapreste dirmi a cosa serve?

 wrote in message
s8Xc8.3619$l_3.1...@twister1.libero.it...


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

esistono funzioni per gestire le informazioni nei file .ini, oppure bisogna
fare delle semplici letture a file?
Grazie!

 fare delle semplici letture a file?
   L'SDK di Windows definisce le funzioni adatte per leggere e scrivere 
string ed interi nel file "win.ini" ed in altri file con questo formato:
	(Get|Write)[Private]Profile(Int|String)
   Maggiori informazioni su queste funzioni su
	news:it.comp.programmare.win32
--
Alla prossima,
Marco

Newsgroup: it.comp.lang.c
Titolo: cerco libreria per creare programmi dos a finestre...

Come da oggetto: qualcuno ne conosce?
Al limite anche a pagamento.
Grazie.
NM

Borland TurboVision puo' andar bene?
oltre al nome non so nient'altro :-)
ciao
donCiccio

Esiste anche sul turbo C?
Cmq ne preferirei una per il DJGPP....
NM


Il Wed, 13 Mar 2002 21:19:15 GMT, 
nom...@nowhere.no
 (NoMan) ha
scritto:

La migliore a mio parere é CXL. 
Fornisce gestione di finestre, menu', sistema di help sensibile al
contesto ed altro. La libreria é per Turbo C, per MS e Zortec.
Credo che l'ultima versione sia la 5.1 del 1989 (!!). Facendo una
ricerca con Google non dovrebbe essere difficile trovarla.
Damiano
Newsgroup: it.comp.lang.c
Titolo: Procedura per conversione file binario in ascii e viceversa

Ciao a tutti,
probabilmente mi sto perdendo in un bicchier d'acqua ma non riesco a
saltarci fuori quindi chiedo il vostro aiuto.
Ho una procedura in C già scritta che legge i dati da files di tipo binario
che dovrebbero contenere terne di valori corrispondenti a coordinate di
punti.
L'istruzione che esegue la lettura del file è del tipo
  [...]
   i_array = (long *) malloc (maxele * sizeof(long));
  iele = fread (i_array,sizeof(long),maxele,inFile);
    [...]
Il file di input è aperto in modalità "rb".
mi ritrovo quindi nell'array di long i miei valori!
Posso quindi scrivermeli su file di testo in questo modo:
[...]
  for (j=0; j<iele; j +=3)
   fprintf(outFile,"%.2lf %.2lf %.2lf\n", (double) i_array[j], (double)
i_array[j+1], (double) i_array[j+2]);
[...]
Non badate al fatto che vengano convertiti in double: le coordinate vengono
sottoposte ad elaborazione quindi posso risultare valori reali e non più
interi.
Ora vorrei scrivere una procedura che dati i valori scritti in un file ascii
(testo) mi ricrea il file binario (riscrivendoli come long ing).
Ho provato a scrivere una funzione di scrittura ma sembra non funzionare:
[...]
  //Lettura di terna di valori
  fscanf(inFile, "%lf %lf %lf", &x, &y, &z);
  lx = (long) x;
  ly = (long) y;
  lz = (long) z;
  fprintf(outFile, "%ld", lx);
  fprintf(outFile, "%ld", ly);
  fprintf(outFile, "%ld", lz);
[...]
Se provo a riapplicare la procedura precedente di conversione bin->ascii mi
ritrovo valori completamente diversi.
In realtà il mio problema è capire come è scritto il file binario originale:
se lo apro con un editor qualunque è un'accozzaglia illeggibile di
caratteri. Il file binario creato dalla mia procedura invece scrive il file
come se fosse un file di testo (il problema secondo me sta qui ma non so
come risolverlo) e quindi è sempre leggibile anche solo con notepad.....
Un chiarimento please!
Grazie
Bye
John

 (testo) mi ricrea il file binario (riscrivendoli come long ing).
ti fai un array di long, lo riempi con i valori che vuoi salvare e poi
lo salvi in un file binario (cioe' aperto con "wb") usando la funzione
fwrite che e' il corrispettivo della fread. Il tutto in un paio di 
istruzioni.
Studiati la fwrite:
#include <stdio.h>
size_t fwrite( const void *ptr, size_t size, size_t nmemb,FILE *stream);
The  function  fwrite  writes nmemb elements of data, each
size bytes long, to  the  stream  pointed  to  by  stream,
obtaining them from the location given by ptr.
ciao,
g.

 Studiati la fwrite:
Ecco lo sapevo!
Di tutte le funzioni che gestiscono gli stream I/O non avevo perso in
considerazione la fwrite!
Thanks ora provo!
Bye
John


...non fprintf. Cosě scrivi del testo formattato "%ld". I dati grezzi li hai
letti con fread; quindi fwrite.
Ciao.
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (
http://www.grisoft.com
).
Version: 6.0.667 / Virus Database: 429 - Release Date: 23/04/2004
Newsgroup: it.comp.lang.c
Titolo: Rispondere al più presto!!

Salve....
mi servirebbe una istruzione/funzione che controlli che il numero  inserito
è effettivamente un numero e non un carattare...
Visualizzare quindi un messaggio d' errore....
Grazie per le eventuali risposte.
--------------------------------------

 č effettivamente un numero e non un carattare...
la funzione isdigit() contenuta in ctype.h fa quello che ti serve.
P.S. Non usare piů oggetti simili, che sottolineano piů una pretesa che un
aiuto...Questa volta ti č andata bene.
--------------------------------
Inviato via 
http://usenet.libero.it


Sapevo che un oggetto simile avrebbe fatto della polemica... ma davvero mi
serviva subito. Comunque ti ringrazio
ciaoo
ciaoooo


 inserito è effettivamente un numero e non un carattare...
char *input = "10293"
for (i=strlen(input); i>=0; i--)
    if (!isdigit(input[i])) {
        if (i == 0 && (input[i] == '-' || input[i] == '+'))
            ok();
        else
            errore();
        break;
    }
La definizione corretta di intero e' questa:
<grammatica>
intero -> segno.cifra
segno -> '-' | '+' | epsilon
cifra -> '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'
</grammatica>
isdigit() controlla solo che i caratteri siano delle cifre, non ti dice se
il numero e' un intero o meno. Anche la *scanf potrebbe aiutarti.
Nota che in alcuni casi un intero troppo grande per essere contenuto in
sizeof(int)*CHAR_BIT bit (sulla mia piattaforma 32 bit) non e' un intero
valito, dipende dalle specifiche del problema.
-- 
Mox
"Trust the programmer."
"Don't prevent the programmer from doing what needs to be done."
"Keep the language small and simple."
"Provide only one way to do an operation."

 serviva subito. Comunque ti ringrazio
visto che hai fatto 2 post ed il titolo dell'altro era "LEGGETE!!..."
se metti un titolo decente è anche piu' facile che qualcuno ti risponda...

Newsgroup: it.comp.lang.c
Titolo: Host vivo o morto

Ciao a tutti,
                    nessuno conosce un modo per vedere se un host è vivo o
morto?? Non posso usare il ping perchè l'host è dietro firewall, l'unica
cosa che so è che su questa macchina c'è un web server e quindi la porta 80
è aperta.
--
Non c'e' niente di piu' pericoloso di un grande pensiero in un piccolo
cervello
------------------------------
GiòVanni Giò 17
WebMaster of 
www.eretika.com
 The New Rock band
icq contact: #74691597
----------------------------------------------------------------------------
--------
Se vuoi piangere, non farlo: chi non ti capisce, ride; chi ti odia gode, ma
chi ti vuol bene soffre.

 è aperta.
Fai telnet sulla porta 80 se si connette c'e' ancora una qualche forma di
attivita' del sistema. Se poi digiti "GET /" e ti risponde qualcosa allora
e' ancora ragionevolmente vivo.
--
Alessandro Staltari
staltari(a)
geocities.com
Newsgroup: it.comp.lang.c
Titolo: Dare piu' probabilita all'uscita casuale di una stringa

Salve a tutti, ho una questione da porvi sulla probabilita di uscita di
una stringa.
Volevo scrivere un programmino in c che potesse generare in maniera
pseudocasuale una stringa dando a queste un peso
Per spiegarmi meglio:
stringa     peso
mele         1
noci          5
pere          10
prugne     20
in questo esempio le prugne hanno un peso maggione degli altri , quindi
quando genero il numero casuale questo dovrebbe avere  un percentuale
maggione che la mia stringa in uscita siano le prugne.
Qualche suggerimento?
Grazie in anticipo a chiunque voglia aiutarmi

kilos ha scritto:

Dividi l'estensione dell'intervallo dei numeri casuali (RAND_MAX+1) per 
la somma dei pesi (ottieni un numero q).
Genera un numero a caso (n).
Se n sta tra 0 e q-1 => mele
Se n sta tra q e q+5q-1 => noci
Se n sta tra q+5q e q+5q+10q-1 => pere
Se n sta tra q+5q+10q e q+5q+10q+20q-1 => prugne
Ciao.

 maggione che la mia stringa in uscita siano le prugne.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
    int i, 
    c_it=1000,
    c_mele=0, 
    p_mele=1,
    c_noci=0, 
    p_noci=5,
    c_pere=0, 
    p_pere=10,
    c_prugne=0, 
    p_prugne=20,
    ptot = p_mele+p_noci+p_pere+p_prugne;
 
    srand(time(0));
    for (i=0; i<c_it; i++) {
        int v=(int)((double)rand() / ((double)RAND_MAX + 1) * ptot)+1;
        if (v==p_mele)
           ++c_mele;
        else
        if (v>p_mele && v<=(p_mele+p_noci)) 
           ++c_noci;
        else
        if (v>(p_mele+p_noci) && v<=(p_mele+p_noci+p_pere)) 
           ++c_pere;
        else
        if (v>(p_mele+p_noci+p_pere) && v<=ptot) 
           ++c_prugne;
    }    
    printf("su %d iterazioni:\n"\
           "%d mele\n"\
           "%d noci\n"\
           "%d pere\n"\
           "%d prugne\n", 
           c_it,            
           c_mele,
           c_noci,
           c_pere,
           c_prugne);
 
    return 0;
}
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it


Grazie mille , non mi aspettavo anche il codice :),
siete stati molto gentili sia tu che cane 
grazie nuovamante

         if (v==p_mele)
E.C.: 
          if (v<=p_mele) 


su 10000 iterazioni:
276 mele
1297 noci
2847 pere
5580 prugne
F:\Miadir\TCC_Win>random
su 10000 iterazioni:
285 mele
1381 noci
2805 pere
5529 prugne
non e molto random . :-)
Ciao

non e molto random . :-)
Lo è, invece.  Ragiona sulle premesse.

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

prova

prova
Esiste it.test per i test di spedizione.

 Esiste it.test per i test di spedizione.
Quoto :P
-- 
L'           č invisibile agli occhi
http://scriverefantascienza.blogspot.com/