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

return che valori ammette...parlo quando č inserito nel main!?
(0) ok...
ma anche 1 e -1?
Se sě che significati gli danno!?
thx
byez
B@STI

 Se sì che significati gli danno!?
Dipende dal sistema operativo.
Di solito, il valore 0 significa che il processo e` terminato senza
errori; al contrario, un valore !0 significa che il processo termina
con un errore. L'error-code ritornato e` parte della specifica del
programma.
Per chi ha stdlib.h, esistono le macro EXIT_SUCCESS ed EXIT_FAILURE
che rendono i codici di ritorno indipendenti dalla piattaforma
utilizzata.
Bye,
 Emmanuele.
-- 
Emmanuele Bassi (Zefram)           [ 
http://www.radiance.d2g.com/~zefram
 ]
GnuPG Key fingerprint = 4DD0 C90D 4070 F071 5738  08BD 8ECC DB8F A432 0FF4

La segnatura della funzione main () è la seguente:
int main (void);
Quindi un qualsiasi valore di tipo int va bene. Questo viene restituito al
programma che utilizza l'applicazione come "valore di fine esecuzione
applicazione"; se il programma è a sé stante un valore vale l'altro (bel
gioco di parole, eh?), mentre se viene utilizzato da qualche altro programma
(es. scrivi un'applicazione che legge ed ordina i file della directory e poi
la fai utilizzare da un altro programma per selezionare un determinato file)
allora il valore di ritorno è importante, perché indica se tutto è andato
bene e, in caso negativo, cosa è andato storto (es. l'unità da cui vuoi
leggere il file non è stata formattata). Spero di essere stato chiaro. Ciao
                                                    Marchisio Stefano
Newsgroup: it.comp.lang.c
Titolo: operatore sizeof()

Ciao a tutti ^^
Ho problemi a capire come ottenere il numero di elementi totale di 
un'array, con il sizeof, di questo tipo:
struct mystruct
{
    char *str_one;
    char *str_two;
};
my_struct const table[] =
{
    { "parole", "a" },
    { "caso", "." }
};
e ho molte altri array del tipo sopra.
Il fatto è che li passo come argomento in una funzione che li gestisce 
in questo modo:
int read_table( FILE fp, my_struct const *table )
{
    int x;
    char string;
    string = fread_word( fp );
    for ( x = 0;  x < sizeof(table)/sizeof(table[0]);  x++ )
    {
        if ( !strcmp(string, table[x].str_one) )
            return x;
    }
}
pensavo funzionasse, invece sizeof(table) ridona 4 e sizeof(table[0]) 8.
Il primo valore è sbagliato, o meglio non è quello che vorrei, cioè la 
dimensione totale dell'array.
Come si può risolvere se si può?
Au revoir e grazie :)
--
http://utenti.lycos.it/RPGfantasy/
Inviato da 
www.mynewsgate.net

 dimensione totale dell'array.
sizeof ti ha restituito il valore giusto: 4 (la dimensione a un puntatore a
my_struct) e 8 (la dimensione di my_struct).
Il problema è che sizeof è risolto al momento della compilazione, ma il
compilatore guardando la tua funzione non può sapere quanto sarà grande
l'array puntato da table, perchè non può sapere cosa tu passerai in quel
parametro (potresti anche passare NULL dopotutto). Il fatto che magari tu la
usi una sola volta quella funzione, magari passandoci per davvero un array
dichiarato come:
mystruct a[100];
al compilatore non interessa.
Nota cmq che dove tu hai dichiarato la mystruct a[100] puoi saperne la
dimensione (è lecito scrivere
{
    mystruct a[100];
    int size = sizeof(a) / sizeof(a[0]);
}
--- bye

 pensavo funzionasse, invece sizeof(table) ridona 4 e sizeof(table[0]) 8.
È giusto: "table" è un *puntatore* alla struttura, nel tuo codice.
Una ossibile soluzione potrebbe essere: invece di passare il solo
puntatore alla struttura, aggiungi anche un parametro per la dimensione
della struttura che passi alla funzione:
	ret function (struct *table, size_t table_size);
Dove "table_size" lo calcolerai all'occorrenza.
Ciao,
 Emmanuele.
-- 
Emmanuele Bassi (Zefram)                 [ 
http://www.emmanuelebassi.net
 ]
GnuPG Key fingerprint = 4DD0 C90D 4070 F071 5738  08BD 8ECC DB8F A432 0FF4

Newsgroup: it.comp.lang.c
Titolo: curiosita'

girando su google, ho letto diversi codici che implementano una cosa
del genere per sfruttare diverse vulnerabilita'.
char pippo[] = {0xab, 0x00, 0x00,etc etc}
Volevo chiedere, come fanno a ricavare questi esadecimali, fanno
reverse engineering, con quali tool?, come fanno a dumpare l'area di
memoria
Giusto una curiosita', se riuscite a darmi piu' info, qualche link
specifico ancora meglio, ambiente windows chiaramente.
Grazie in anticipo

yqy...@hotmail.com
 ha scritto:

sei OT. Comunque, 
http://insecure.org/stf/smashstack.html
Ciao,
Zeppe

yqy...@hotmail.com
 ha scritto:

SoftIce
http://www.softpedia.com/get/Programming/Debuggers-Decompilers-Dissasemblers/SoftICE-Driver-Suite.shtml
Link utili
http://www.woodmann.com/forum/index.php
http://www.quequero.org/
Ciao
Newsgroup: it.comp.lang.c
Titolo: Problema d'esame.... aiuto per favore!

Ciao a tutti. E' la prima volta che scrivo in questo newsgroup
spero che voi possiate darmi una mano.
Mi trovo di fronte ad un esercizio di esame di Programmazione. Vi
posto il testo:
Progettare un programma C che legge in preordine
da stdin un albero binario etichettato con interi sui nodi 
e lo stampa su stdout in postordine.
(Questo sotto è il file di input che devo dargli in ingresso,
dove nella prima colonna c'è 0 se il nodo non ha figlio sinistro
e 1 invece se ce l'ha. Analogamente la seconda colonna presenta 1
se il nodo ha figlio destro e 0 se non ce l'ha. E poi nella terza
colonna c'è il valore del nodo vero e proprio cioè il campo data)
1 1 123
1 0 1456 
0 0 2940
1 1 7123
0 1 2456
0 0 2678
1 1 1990
0 0 4589
0 0 1717
Analogamente all'input devo presentare in output un cosa del
genere (come scritto nel testo però in postorder):
0 0 2940
1 0 1456
0 0 2678
0 1 2456
0 0 4589
0 0 1717
1 1 1990
1 1 7123
1 1 1123
Ora vi posto il mio codice che dovrebbe andare bene solamente che
quando lo faccio partire, con la redirezione in input del file di
input, non stampa niente (uso Dev-C++ come compilatore e quindi
ogni volta che c'è qualcosa che non va non mi da messaggi per
dirmi cosa non va, semplicemente il programma non fa nulla).
#include <stdio.h>
#include <stdlib.h>
struct _NODE {
	int nData;
	struct _NODE *pLeft, *pRight;
};
typedef struct _NODE NODE;
typedef NODE *TREE;
TREE ReadTree() {
	TREE t = (TREE)malloc(sizeof(NODE));
	int fHasLeft, fHasRight;
	int nData;
	scanf("%d %d %d", &fHasLeft, &fHasRight, &nData);
	t->nData = nData;
	if (fHasLeft) {
		t->pLeft = ReadTree();
	}
	if (fHasRight) {
		t->pRight = ReadTree();
	}
	return t;
}
void WriteTree(TREE t) {
    if (t==NULL) 
       return;
	WriteTree(t->pLeft);
	WriteTree(t->pRight);
	printf("%d %d %d\n",
		t->pLeft,
		t->pRight,
		t->nData);
 
}
int main(void){
    TREE albero=(TREE)malloc(sizeof(NODE));
    albero=ReadTree();
    WriteTree(albero);
    system("pause");
    return 0;
}   
 
Da cosa può dipendere? Grazie e scusate se mi sono dilungato un
po' troppo. :)
--  
Postato da Virgilio Newsgroup: scopri i nuovi gruppi 
Eros, foto e video a 
http://newsgroup.eros.virgilio.it

     albero=ReadTree();
Qui allochi memoria per albero con la malloc (ricorda che in C il cast su
malloc non serve mai), e poi perdi subito traccia della memoria che hai
allocato facendo puntare albero ad un'altra zona di memoria. Non è questo
che ti causa il problema che dici però è sicuramente sbagliato e
dovresti fare così:
	TREE albero = ReadTree();
Ciao ..
Mdrunk
Newsgroup: it.comp.lang.c
Titolo: Carattere EOF

Utilizzo il libro di Ritchie e nei vari esempi viene spesso usato il
carattere EOF  come in questo caso:
#include<stdio.h>
main()
{
    int c;
    while((c = getchar()) != EOF)
          putchar(c);
}
L'utilizzo di questo carattere con i file mi è chiaro, quello che non riesco
a capire è perchè viene utilizzato in questa situazione dove non ho nessun
file e l'unico risultato è di non uscire dal ciclo while.So che assume il
valore di -1 ma questo non mi è stato d'auito.
Ringrazio chiunque sappia chiarirmi questo dubbio.
Ciao

 valore di -1 ma questo non mi è stato d'auito.
Altra faq. In sistemi MS-DOS/Windows se premi CTRL-Z (per alcuni
compilatori solo se all'inizio di una riga) generi l'EOF. La funzione
getchar() restituisce questo valore, che è diverso da qualsiasi
carattere ottenibile, quando incontra il CTRL-Z.
EMG

valore di -1 ma questo non mi è stato d'auito.
Questa e' una questione che si ripete di frequente e la cui
spiegazione e' basata sul fatto che il C assume che anche la fonte di
input e la destinazione dell'output siano file.
In questo linguaggio, difatti, esiste la fonte di input standard e la
destinazione di output standard.
Vengono identificati con i due nomi di file "stdin" e "stdout" e se
non subiscono reindirizzamenti vengono associati rispettivamente alla
tastiera e al video.
Da tastiera e' possibile imporre la fine del flusso di caratteri
immessi digitando CTRL+Z
Con "reindirizzamento" si intende quella operazione che associa, per
esempio, alla fonte stdin un file su disco o qualsiasi altra fonte che
possa fornire input e/o alla destinazione stdout un file su disco o
qualsiasi altra fonte che possa sviluppare un output.
Il modo in cui questi due file standard vengono reindirizzati dipende
dal sistema operativo che utilizzi.
Sotto DOS per esempio e' possibile reindirizzare sia l'input che
l'output rispettivamente medianti gli operatori < e >
Ad esempio si potrebbe scrivere :
miofile < testo.txt > prn
Cioe' applicare al file testo.txt il mio programma e spedire il suo
output alla stampante.
In questo caso l'effetto del getchar() equivale alla lettura di un
carattere dal file e quello del putchar() alla stampa (tramite
stampante) dello stesso carattere.
Il vantaggio di questa operazione e' che essa non pregiudica la
portabilita' del tuo codice per ogni diverso utilizzo.

 wrote:
[ snip ]
AL>Da tastiera e' possibile imporre la fine del flusso di caratteri
AL>immessi digitando CTRL+Z
...sotto DOS & Co., mentre sotto Linux (e altri Unix) si utilizza
CTRL+D.
Ciao ciao,
Andrea
-- 
"...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and 
 the Ugly)."
(by Matt Welsh)

CTRL+D.
Esatto, ovviamente ogni sistema operativo dovrebbe consentire di
stabilire la fine del flusso.
Newsgroup: it.comp.lang.c
Titolo: allocazione dinamica struttura

ciao a tutto il NG, sto imparando ad allocare dinamicamente gli array.
Ho la seguente struttura:
typedef struct {
float *x;
float *y;
float *z;
}
nomestruct;
devo allocare dinamicamente gli elementi di questa struttura, in modo
tale che il programma in fase di compilazione riconosca la dimensione
degli array appartenenti alla struttura da allocare (n).
per ora dico
int n 200;
for(i=0;i<n;i++)
nomestruct.x[i]=....
..operazioni
ma così non alloco nulla, e devo cambiare n ogni volta, perchè il
programma legge ogni volta file di input diversi con n diverso.
Esiste un modo per allocare questi elementi  e per liberare poi la
memoria una volta fatte le operazioni con essi?
 Non ho capito come si fa, ed inoltre avevo letto che allocare
dinamicamente una struttura può dare problemi di stabilità al
programma.......
grazie a tutti!
m.dardo

 programma legge ogni volta file di input diversi con n diverso.
Prima di rileggiti il capitolo sull'allocazione dinamica, guarda quello 
sui puntatori e sulla relazione di questi con gli array: da quanto hai 
scritto non penso che tu abbia capito molto.
Ciao
-- 
Toyotoshy, Linux user #312588

 Ciao
ovvio, altrimenti non avrei postato...
comunque grazie per il suggerimento
ciao
Newsgroup: it.comp.lang.c
Titolo: anno bisestile

ciao a tutti, devo scrivere una procedura in c che mi calcoli il giorno
precedente rispetto al giorno corrente
nessun problema se non per un caso specifico:
il problema e' che se oggi e' il 1 marzo, devo sapere se ieri era il 27
o il 28 febbraio, e ovviamente per far questo devo calcolare se l'anno corrente
e' bisestile
chi puo' dirmi dove posso trovare l'algoritmo in c, o se qualcuno ce l'ha
e me lo puo' mandare...
ciao e grazie in anticipo
__________________________________________________________________
Abbonati a Tiscali!
Con VoceViva puoi anche ascoltare ed inviare email al telefono.
Chiama VoceViva allo 0143 434343
http://voceviva.tiscali.it
-- 
Posted from 
mail-4.tiscalinet.it
 [195.130.225.150] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

e me lo puo' mandare...
int is_bisestile(int year)
{
    return (year % 4) == 0;
}

}
Sbagliato.

 Sbagliato.
ma corretto dal 1901 al 2099 :) 

 Sbagliato.
Beh, potevi anche rispondere visto che sai che cio' che ha scritto iGor e'
sbagliato...
Quindi, visto che oltre a contraddire gli altri non ti interessa aiutare le
persone...
<QUOTE from 
http://www.microsoft.com/italy/
 >
Il calcolo dell'anno bisestile viene eseguito secondo le seguenti regole: un
anno è bisestile quando è divisibile per 4, ma NON per 100. È tuttavia
bisestile un anno divisibile per 400. L'Anno 2000 è quindi uno speciale caso
di anno bisestile che si verifica una volta ogni 400 anni.
</QUOTE>
Alex

 }
uffa!...
 int is_bisestile(int year)
 {
     return !(year % 4) && (year % 100);
 }

sbagliato...
Quella a cui stai rispondendo e' la mia risposta.

ma corretto dal 1901 al 2099 :) 
Falso comunque.

 }
Arisbagliato.


Grazie ... la prossima volta cosulterò un vacabolario....ari-uffa

 Quella a cui stai rispondendo e' la mia risposta.
????
Alex

 Falso comunque.
ripensaci. 

 Falso comunque.
???
Alex


http://voceviva.tiscali.it
int Bisesto(int anno) {
  return ((anno % 4) == 0)
    && (((anno % 100) != 0) || ((anno % 400) == 0));
}
ciao, acc.   
a...@libero.it

Ciao, scusa il dubbio...ma cosa ritorna la funzione da te scritta (in
termini di valore intendo...).
Grazie 1000
Enrico
--
Webmaster della Pagina NON Ufficiale del SonyCRX100
SonyCRX120,  SonyCRX140E/S, SonyCRX100EX, HP8100
HP8200, HP9100 & HP9200
http://www.freeweb.org/computer/SonyCRX100

Falso comunque.
Spero che tu sappia che il test del nostro amico non e'
adatto per testare gli anni bisestili.
--
Andrea Laforgia - walkietalkie(at)
libero.it
#exclude <windows.h>

Grazie ... la prossima volta cosulterò un vacabolario....ari-uffa
Consulta il K&R II, farai prima, pag. 49 (versione
italiana).


termini di valore intendo...).
Vero o Falso (1 o 0).



ma secondo lo standard l'espressione (x==0) se e' vera fa sempre 1 oppure un
qualsiasi valore diverso da zero?
Posso scrivere cose come questa:
int  x,bit0,bit1,bit2,bit3,...;
x = (bit0!=0) + (bit1!=0)*2 + (bit2!=0)*4 + (bit3!=0)*8... ;
ed avere sempre, ovunque porti questo codice, il valore corretto in 'x'?
ciao
donCiccio

qualsiasi valore diverso da zero?
e' sempre 1.

Newsgroup: it.comp.lang.c
Titolo: Aiuto per gestione I/O...

Mi sono avvicinato da pochissimo al C.
Vorrei sapere se esistono delle funzioni in C che permettono di scrivere un
dato (un int ad esempio) in una locazione di memoria.
Mi servirebbe per gestire una schede di I/O digitale (l'indirizzo della
scheda è 202 i dati da scrivere vanno da 0 a 255 )
E per la lettura di dati su di una porta I/O (200 per esempio ?)...
Rimuovere fax per rispondere
asfax...@tin.it
Grazie a tutti !!

,

Sistema operativo ed ambiente richiesti per dare risposte sensate.
In DOS con MSC _inp()/_outp()
In DOS con Borland inportb()/outportb()
In Win9x, vedi DOS
In WinNT, occorre scrivere un driver
In Linux, non so di preciso. Dovrebbe occorrere settare ioperm ... e poi ..
-----------== Posted via Deja News, The Discussion Network ==----------
http://www.dejanews.com/
       Search, Read, Discuss, or Start Your Own    

dato (un int ad esempio) in una locazione di memoria.
Una delle caratteristiche principali del C e' quella di non possedere
comandi o funzioni intrinseche per la gestione dell'I/O.
Eventuali estensioni che consentono di gestire le porte di I/O
rientrano nell'ambito del tuo particolare compilatore e/o sistema
operativo.
Newsgroup: it.comp.lang.c
Titolo: Che è il C99 ?

già detto tutto

già detto tutto
Il nuovo standard del linguaggio C.
"Nuovo" per modo di dire, visto che e' stato approvato due
anni fa.  La prima standardizzazione del C risale al 1990.
-- 
Andrea Laforgia - walkietalkie(at)
libero.it
"Meglio cieco che negro" (Stevie Wonder)

 
Sai dove posso trovare infarmazioni free sul c99, che ne so magari un
draft.
Ciao
--
Abruzzo Silvio

 draft.
http://std.kduug.dk/JTC1/SC22/WG14/www/docs/n897.pdf
E`  uno degli  ultimi draft  prima della  pubblicazione dello  standard.
Tieni  conto  che  ci  sono delle  discrepanze  rispetto  allo  standard
definitivo.
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
ATTENZIONE: il mio indirizzo email e` cambiato, quello vecchio verra` 
disabilitato a breve.
The trouble with computers is that they do what you tell them, 
not what you want.
D. Cohen


Il link non funziona

 Il link non funziona
Ops:
http://std.dkuug.dk/JTC1/SC22/WG14/www/docs/n897.pdf
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
ATTENZIONE: il mio indirizzo email e` cambiato, quello vecchio verra` 
disabilitato a breve.
Non ho ancora capito se il mio cane e` maschio o femmina:
quando fa la pipi` si chiude in bagno
Newsgroup: it.comp.lang.c
Titolo: Alcuni dubbi

Perdonate eventuali errori o assurdi
dovuti alla mia incompetenza.
Vi sottopongo due dubbi:
1- Non mi e' molto chiara la problematica inerente
   allo svuotamento del buffer della tastiera.
   Capita infatti che tale buffer rimanga pieno e 
   sia necessario svuotarlo  usando ungetch()
  a - Quando e perche' capita questo problrma?
  b - ungetch() dovrebbe rispedire il char nello stream?
      Quindi il getch() successivo dovrebbe recuperare
      lo stesso char. Tuttavia (podarsi abbia sbagliato io)
       cio' nn mi risulta.
 2- Sui file:
    La definizione di file binario dovrebbe essere quella di file 
    in grado di memorizzare qualsiasi tipo di informazione con
    corrispondenza 1:1 fra byte letti e scritti con quelli 
    effettivamente inviati al dispositivo fisico.
    Ora, nel momentoi in cui io vi scriva una stringa, sul file
    viene memorizzato anche il '\0'?
    E nei file 'di testo' ?
Scusate le domande da principiante.

       cio' nn mi risulta.
Si, giusto, ma non c'entra nulla con lo svuotamento del buffer della
tastiera :)

 >   sia necessario svuotarlo  usando ungetch()
puoi usare la funzione
fflush(stdin);/*dove stdin è il flusso associato alla tastiera*/

    E nei file 'di testo' ?
Neanche.
-- 
Andrea Laforgia - walkietalkie(at)
libero.it
"Meglio cieco che negro" (Stevie Wonder)



Non sempre.
fflush() e' definita, secondo lo standard, SOLO su stream di
output.  Ci sono molti compilatori su cui quel codice
produce comportamento indefinito.


 
Per quel che riguarda i file binari ho capito (rileggendo anche con piu'
attenzione la documentazione di fread e fwrite).
Tornando ai file di testo quale e' allora il meccanismo che permette
ad un istruzione del tipo 
  fscanf(file,"%s%d%d", string,&i,&j)
di capire i limiti della stringa (cioe' se ad esempio i due int
contengono un valore tale da poter essere considerati come 4 char 
ASCII stampabili? Non ci puo' essere un errore di interpretazione?).
Sono forse obbligato ad utilizzare :
  fscanf(file,"%s %d %d", string,&i,&j)
(naturalmente modificando anche il formato dei dati nel file :)) )
Qui lo spazio fra i campi mi aiuta a risolvere le ambiguita'.
Mi rendo conto di fare delle domande da pivello, ma se voglio imparare il
C voglio togliermi qualsiasi dubbio e nn usare istruzioni di cui nn
comprenda completamente il funzionamento. ;)
Ne approfitto per ringraziare oltre te anche Mox e Roberto per le
risposte.
Saluti
MarcoT

  fscanf(file,"%s %d %d", string,&i,&j)
In questo caso funziona, a meno che la stringa che compare
prima dei valori numerici non contenga spazi.

Newsgroup: it.comp.lang.c
Titolo: facile facile...ma urgente

ciao a tutti....voi non lo sapete...
 ma dobbiamo generare n numero random x maggiore di a e minore di b...
come faccio?
x = rand % (b) per il minore di b...
e per il maggiore di a???
Grazie mille

 
ciao ciao
-- 
                    |   .-.
Gianluca Di Corato  |  : | :  I N  P E A C E  W E  T R U S T
   (aka sgrung)     |  '/|\'

:

Riformula cosi': un numero compreso tra a e b.
Ti basta generere numeri random tra 1 e b-a e poi addizionargli il
valore di a.
<code>
x = a + 1 + rand % (b-a-1)
</code>
Es: a: 10 e b:20
-->  10 + 1 + rand() % (20-10-1)
-->  11 + rand() % 9
-->  11 + (0..8)
-->  11..19
Nota: rand()%9 genera numeri tra 0 e 8.
il +1 e il -1 servono solo perche' a te interessano numeri tra ]a, b[.
-- 
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."

Sei sempre molto chiaro e preciso...
grazie
Newsgroup: it.comp.lang.c
Titolo: strano comportamento con file vuoto

Ciao
 
Supponiamo di avere un file senza alcun carattere in esso, per esempio
un file .txt vuoto. Sia pippo.txt il nome del file.
 
Supponiamo di scrivere istruzioni
 
FILE* pf;
char str[128];
pf = fopen("pippo.txt", "r");
fgets(str, 100, pf);
 
Domanda: Con che cosa si riempie str? In altre parole, se faccio
 
printf("%s", str);
 
che cosa appare?
 
Bene, io mi aspettavo che apparisse il fine stringa, invece mi appare
un sacco di schifezze, allego in fondo al post ciò che appare..
Sapreste spiegarmi il motivo di questo comportamento? Grazie
 
╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠
╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠H¶1►╠╠╠╠
£o─À© ↕
Premere un tasto per continuare . . .

 
devi controllare il valore di ritorno di fgets
#include <stdio.h>
#include <stdlib.h>
int main () {
  FILE* pf; 
  char str[128]; 
 
  if ((pf = fopen("pippo.txt", "r")) != NULL) {
    while ( fgets(str, 100, pf) != NULL) {
      printf("%s", str); 
    }
  } else {
    printf ("Il file non può essere aperto\n");
    exit (1);
  }
}
-- 
Il segreto della felicità non è di far sempre ciò che si vuole
ma di voler sempre ciò che si fa.
                                             - L. Tolstoi -

"If end-of-file is encountered and no characters have been read into the 
array, the contents of the array remain unchanged and a null pointer is 
returned."
dalla descrizione di fgets dello standard corrente.
Quindi, a secnda delle necessita', o usi il confronto con NULL  del 
valore di ritorno o pre-inizializzi la stringa su cui dovrebbe scrivere 
fgets alla stringa vuota.
Giorgio

 devi controllare il valore di ritorno di fgets
Aggiungo, ti stampa quello perché "str" non la tocca se la lettura
fallisce. E siccome prima non lo hai svuotata...
Enrico

    while ( fgets(str, 100, pf) != NULL) {
while ( fgets(str, sizeof str, pf) ) {
Giacché hai dichiarato 128 caratteri, sfruttali tutti.
Ovviamente la sizeof va bene solo perché si tratta di un vettore e
quindi non decade in puntatore al primo elemento.

 quindi non decade in puntatore al primo elemento.
Scusa Andrea, non ho capito. sizeof che scrivi in
fgets(str, sizeof str, pf)
è da intendersi come il numero 128 oppure come l'istruzione
sizeof(tipo variabile). In quest'ultimo caso non ho ben chiara la
sintassi di
fgets(str, sizeof str, pf).
Grazie.

fgets(str, sizeof str, pf).
La sintassi segue strettamente la sintassi di fgets().
Scrivere: 
sizeof str 
significa, in questo caso, calcolare la dimensione del vettore str.
Newsgroup: it.comp.lang.c
Titolo: qsort con possibili NULL

scusate mi sapreste dire cosa sbaglio nell'uso della qsort nel codice
che segue (riporto prima l'output sulla mia makkina)
se il codice è incomprensibile spiego a parole cosa vorrei fare
grazie...
-------------OUTPUT--------------------------------
array[5]=0.934000
array[25]=0.760000
array[125]=0.006000
array[161]=0.900000
QSORT
array[0]=0.900000 <<<<<<<<<<<<<<<<<<<<<<<<<<
array[1]=0.006000
array[2]=0.760000
array[3]=0.934000
------------SOURCE CODE---------------------------
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct Tnodo {
	float value;
}nodo;
#define MAX 256
nodo* array[MAX];
int SComp(const void *a,const void *b) {
	const nodo *n1=(const nodo*)a;
	const nodo *n2=(const nodo*)b;
 
	if(n1==NULL && n2==NULL)return 0;
	if(n1==NULL) return -1;
	if(n2==NULL) return 1;
 
	if(n1->value < n2->value) return 1;
	else if(n1->value > n2->value) return -1;
	return 0;
}
int main(int argc, char *argv[])
{
  int i;
  memset(array,0,sizeof(nodo*)*MAX);
  array[5]=(nodo*)malloc(sizeof(nodo));
  array[5]->value=0.934;
  array[25]=(nodo*)malloc(sizeof(nodo));
  array[25]->value=0.76;
  array[125]=(nodo*)malloc(sizeof(nodo));
  array[125]->value=0.006;
  array[161]=(nodo*)malloc(sizeof(nodo));
  array[161]->value=0.9;
  for(i=0;i<MAX;i++)
	  if(array[i]!=NULL)
		  printf("array[%d]=%f\n",i,array[i]->value);
  printf("QSORT\n");
  qsort(array,MAX,sizeof(nodo*),SComp);
  for(i=0;i<MAX;i++)
	  if(array[i]!=NULL)
	  printf("array[%d]=%f\n",i,array[i]->value);
  return EXIT_SUCCESS;
}

 che segue (riporto prima l'output sulla mia makkina)
No, la gestione del vettore sparso attraverso i NULL
ci puo' anche stare.
L'errore e'  nelle due righe della funzione di
confronto:
  	const nodo *n1=(const nodo*)a;
  	const nodo *n2=(const nodo*)b;
che devono diventare:
	const nodo *n1 = *(const nodo **)a;
	const nodo *n2 = *(const nodo **)b;
il motivo e' il sequente.
il tuo array "array" e' un array di puntatori.
in generale la qsort passa alla funzione di
comparazione due puntatori agli elementi
da confrontare, quindi nel tuo caso ti sta
passando due puntatori a puntatori alla struct che
contiene il float.
Quindi il tipo "vero" di quello ti passa e' nodo**
e per farlo diventare nodo* bisogna fare un passaggio
in piu'.
ciao,
g.

Grazie 1000 x la celerità e x l'esauriente spiegazione

Newsgroup: it.comp.lang.c
Titolo: Aiuto.

Salve a tuti,
Sono un programmatore alle prime armi ed ho il seguente problema:
#include <stdio.h>
main()
{
 long double a;
 char c;
 while (scanf("%c%lg", &c, &a) != EOF)
 {
  if (c == 'f' || c == 'F')
printf("%g\n", 1.8 * a + 32);
.............................
Ho il suddetto codice che peró trovo difettoso, perché se inserisco ad
esempio un punto
interrogativo singolo non me lo legge devo per forza inserirne un'altro
consecutivo; peró
vorrei utilizzare l'help con la pressione di un singolo tasto (ad esempio
F1) cioé quando premo
F1 vorrei che mi visualizzasse una determinta schermata. Come devo fare?
Vi rammento che il suddetto codice (come si vede dalla sua struttura) mi
occorre per
catturare un valore numerico ed un valore alfanumerico.
Potete aiutarmi?
Ciao a tutti,
Daniel Fadlun.

.............................

Newsgroup: it.comp.lang.c
Titolo: Info Fast Fourier Trasform

Salve
Scusate per l'off-topic... 
Pur sapendo cos'è la Trasformata e Serie di Fourier 
(le mie conoscenze derivano principalmente da 
Analisi III, e T.Segnali), non sono riuscito a trovare
informazioni su l'algoritmo FFT (Fast Fourier Trasform).
Mi piacerebbe sapere come funziona, e magari se
possibile, vorrei anche qualche implementazione in C/C++.
Mi basta anche qualche buon link...
Grazie...
Pippo
--
Automatic posted from 
mail8.geocities.com
 [209.1.224.42]
via Mailgate Server - 
http://www.mailgate.org

...
Salve
Scusate per l'off-topic... 



Grazie...
Pippo

----------
C'è un ottimo sito, con tanto di esempi, che usa la FFT e presenta un sacco
di cose utili come la classe numeri complessi...

...
Salve
Scusate per l'off-topic... 
Pur sapendo cos'è la Trasformata e Serie di Fourier 
(le mie conoscenze derivano principalmente da 
Analisi III, e T.Segnali), non sono riuscito a trovare
informazioni su l'algoritmo FFT (Fast Fourier Trasform).
Mi piacerebbe sapere come funziona, e magari se
possibile, vorrei anche qualche implementazione in C/C++.
Mi basta anche qualche buon link...
Grazie...
Pippo
--
Automatic posted from 
mail8.geocities.com
 [209.1.224.42]
via Mailgate Server - 
http://www.mailgate.org
----------
C'è un sito che fa proprio per te: 
www.relisoft.com
: vedrai merita !!!

Non so se questo ti puo' aiutare ma delle routine di FFT si trovano
nella Netlib: http:/
ftp.unina.it/pub/netlib
 e ti giri un po' il sito
dovresti trovare un "fftpack" e un "transform" che contengono le routine
che cerchi (in fortran e in c).
Attento che alcuni link sono errati e che ti tocchera chiamare le pagine
a mano.
Se ti interessa Netlib e una libreria di SW tutta dedicata al calcolo
numerico.
Un altro posto dove cercare e' il sito del Numerical Recipes (un libro
di calcolo numerico), non dovresti avere problemi a trovarlo con
Altavista.
Marco

 
Non so se ti basta, ma all'URL delle Numerical Recipes in C:
http://www.ulib.org/Books/Numerical_Recipes/bookcpdf.html
il capitolo 12 è dedicato alla FFT
Ciao
Paolo

...
Salve
Scusate per l'off-topic...
Pur sapendo cos'è la Trasformata e Serie di Fourier
(le mie conoscenze derivano principalmente da
Analisi III, e T.Segnali), non sono riuscito a trovare
informazioni su l'algoritmo FFT (Fast Fourier Trasform).
Mi piacerebbe sapere come funziona, e magari se
possibile, vorrei anche qualche implementazione in C/C++.
Mi basta anche qualche buon link...
Grazie...
Pippo
--
Automatic posted from 
mail8.geocities.com
 [209.1.224.42]
via Mailgate Server - 
http://www.mailgate.org
    Molto brevemente: se discretizzi la serie di Fourier, ti vengono degli
esponenziali con argomento n/2PI data la periodicità dell'exp, i coeff.
della serie si ripetono ciclicamente per cui si calcolano una volta
sola...nei dettagli esistono molte varianti, ma con questo puoi fare
qualcosa anche da solo!
Newsgroup: it.comp.lang.c
Titolo: Funzioni static

Ciao amici, mi potete spiegare brevemente l'utlita' di una funzione
che ritorna un valore static?

che ritorna un valore static?
No, forse non ci siamo capiti....
Se dichiari una funzione nel modo seguente (ad es.):
static int pippo()
non vuol dire che ritorna uno "static int", ma vuol dire che la funzione è
"static".
L'utilità è semplice: serve semplicemente per linkare la funzione in modo
locale al modulo (ovvero al file sorgente) in cui è dichiarata, per non
renderla disponibile all'esterno (il tentativo di utilizzarla ti darebbe
l'errore "unresolved external").
Ciao.
   \\\' ,      / //
    \\\//    _/ //'
     \_-//' /  //<'
       \ ///  <//'
       /  >>   \\\`
      /,)-^>>  _\`
      (/   \\ / \\\
            //  //\\\
-----------((`-------------------
Marco Novaro
marco...@technologist.com
"Try not. Do. Or do not. There is no try." - Yoda

che ritorna un valore static?
Non esistono funzioni che "ritornano un valore static"; se una
funzione e` dichiarata static, cio` non cambia quel che essa
ritorna, bensi` cambia la sua _visibilita`_, che viene confinata
all'interno del file sorgente che la contiene (la funzione, quindi,
non viene resa nota al linker).
Alex
Newsgroup: it.comp.lang.c
Titolo: Problemone Gets()

Ho la necessità di usare tre gets(stringa) all'interno di una funzione,
lavoranti su 3 stringhe diverse. Bene il primo mi viene saltato come se
fosse stato dato invio! Non so più dove sbattere la testa! Heeeeeeeeellllp!

fosse stato dato invio! Non so più dove sbattere la testa! Heeeeeeeeellllp!
Mi sembra di aver già risposto ad un messaggio identico: devi usare
fgets().
-- 
Andrea Laforgia
#exclude <windows.h>

Bene l'ho usato ma il problema rimane!
Ad ogni modo sei stato tu a consigliarmi di ripostare su questo NG...
"Andrea Laforgia" <x@x.x> ha scritto nel messaggio
news:bhct3v8jgh4mto4jr...@4ax.com...


Ad ogni modo sei stato tu a consigliarmi di ripostare su questo NG...
Non "ri"postare, il mio consiglio era per i messaggi successivi. 


Ho trovato il problema... è cin lo scanf che non si "mangia" i caratteri di
escape... arriva il gets e leggendoli pensa che sia già finita la riga.
"Andrea Laforgia" <x@x.x> ha scritto nel messaggio
news:icuu3v4a2g2rtds96...@4ax.com...

Newsgroup: it.comp.lang.c
Titolo: Cerco Linguaggio C

Cerco Linguaggio C gratis. Qualcuno può indicarmi qualche sito apposito?
Risp.:wlk...@tin.it

 
Risp.:wlk...@tin.it
se quello che cerchi è un compilatore C, guarda sulle FAQ (vedi firma)
ciao ciao
Marco
--
Marco Coppo
University Of Sheffield
FAQ del gruppo: 
http://www.programmazione.it/linguaggi/c/itcomplangc.htm


Risp.:wlk...@tin.it
Che cerchi ? Linguaggio C ? Che vuol dire ?
Augusto Pucci
Webmaster di Prospektiva On-line
http://go.to/Prospektiva

...


 wrote:


Newsgroup: it.comp.lang.c
Titolo: rappresentazione binaria... mi aiutate a dare una rinfresca alle idee?

Ciao a tutti,
mi sto riguardando come vengono implementati i tipi primitivi in C e per 
quanto riguarda i numeri decimali (quindi float e double, sia signed che 
unsigned, sia "normali" che shor che long) faccio davvero fatica ad 
interpretare i valori contenuti in float.h.
A tal proposito vi chiedo: potreste linkarmi a qualche buona risorsa - 
magari molto didattica, molto "for dummies" e con molti esempio - che mi 
aiuti a rinfrescarmi la rappresentazione binaria di numeri decimali (non 
necessariamente con riferimento al C)?
Grazie in anticipo,
Giulio
--
OnAir: Skid Row - "Eileen"


Esaustivo: 
http://docs.sun.com/source/806-3568/ncg_goldberg.html
Semplice: 
http://www.drpaulcarter.com/pcasm/
 Capitolo 6
Ciao.

 Ciao.
Molto interessante... grazie.

 Semplice: 
http://www.drpaulcarter.com/pcasm/
 Capitolo 6
Grazie mille dei links!
Ciao,
Giulio
--
OnAir:
Newsgroup: it.comp.lang.c
Titolo: allocazione

Salve, avrei una piccola domanda da porvi: è possibile eseguire in una
funzione una allocazione su di un puntatore passato come argomento
alla funzione stessa? Una cosa del genere:
void f(int *x, int *y, pippo z, int *dim);
int main() {
    int *x;
    int *y;
    pippo z;
    unsigned int dim, i;
    f(x,y,z,&dim);
    for(i=0; i<dim; i++) printf("%d %d\n",x[i],y[i]);
    return 0;
}
void f(int *x, int *y, int *z,) {
    unsigned int dim = ...elaborazione di z...
    x=(int *)malloc(sizeof(int)*dim);
    y=(int *)malloc(sizeof(int)*dim);
    *dim = k;
}
..il fatto è che i vettori da ritornare sono due ed inoltre
l'elaborazione della dimensione è abbastanza complessa quindi non
vorrei inserirla nel main, però così facendo il printf nel main stampa
della sporcizia... la cosa che vorrei fare è corretta? Perché in
questo caso il problema sta da qualche altra parte nel mio
algoritmo... grazie per l'aiuto.
Ciao, F.

     unsigned int k = ...elaborazione di z...


Così come è non funziona.  come per dim, anche per x e y devi passare 
l'indirizzo.  Prova con:
void f(int **x, int **y, pippo z, int *dim) /* manca un parametro? */
{
      unsigned int len = ...elaborazione di z...
      *x=malloc(sizeof(int)*len);
      *y=malloc(sizeof(int)*len);
      *dim = len;
}
int main()
{
     int *x;
     int *y;
     pippo z;	?????????
     unsigned int dim, i;
     f(&x, &y, z, &dim);
     for(i=0; i<dim; i++) printf("%d %d\n",x[i],y[i]);
     return 0;
}
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   Registered Linux user #337974  < 
http://giovanni.homelinux.net/
 >

 l'indirizzo.  Prova con:
ah ecco, ora funziona... grazie!

Newsgroup: it.comp.lang.c
Titolo: gethostid()!!!!!

Qualcuno mi sa spiegare l'esatto comportamento di questa funzione. Sopratutto
mi da l'indirizzo IP della macchina(Linux-PC) sulla quale eseguo il programma?
La macchina in questione e' in una rete fissa quindi il suo IP non cambia.
Ciao e grazie, Dino.
--
Posted from 
studenti.unina.it
 [192.132.34.114]
via Mailgate.ORG Server - 
http://www.mailgate.org

 mi da l'indirizzo IP della macchina(Linux-PC) sulla quale eseguo il
programma?
No, ritorna un identificatore dell'host indipendente dalla rete (di solito
viene prelevato da una PROM [Sun])
Per ottenenere l'indirizzo IP vedi man
  gethostbyname()
e
  gethostname()
ma forse esiste un modo piu' diretto

 'The Krazy One' +-- 
---->  "To Reign is Worth Ambition, Though in Hell.
     Better to Reign in Hell Than Serve in Heaven" <---
*** TaRT_Tagline: I don't care who you are, Fatso. Get the reindeer off my roof!
Newsgroup: it.comp.lang.c
Titolo: niubbo - perchè inserisce in testa?

ciao a tutti
mi sto avvicinando al c e sto combattendo fra liste e puntatori
ho letto un sacco di cose ma qualcosa mi sfugge, ed esattamente, perchè
questa funzione mi mette i nuovi elementi in testa alla lista e non in
coda?
struct giocata
{
	int cod;
	int numeri[DIMRECORD];
	giocata *next;
};
void nuova(giocata * &lista, int codice, int numgiocati[])
{
	giocata *ptr=lista;
 
	while(ptr==0)
		ptr=ptr->next;
	if (ptr!=0)
	{
		giocata *temp=new giocata;
		temp->cod=codice+1;
 
        for(int i=0; i<DIMRECORD; i++)
		{
			cout<<"giocata n."<<(i+1);
			cin>>numgiocati[i];
			temp->numeri[i]=numgiocati[i];
			ordinaNumeri(temp->numeri, i);
		 }
 
		temp->next=lista;
        lista=temp;
	}
}
non ne riesco a venire a capo :-(
qualche anima pia c'e'?
-- 
Yurij Gagarin
http://www.puknezabudok.ru/gagarin.jpg
La M.I.R. ne ha visti cadere, di Shuttle

 non ne riesco a venire a capo :-(
Come consiglio generale ti consiglio
di prendere un bel foglio di carta dove disegnare delle
caselline che rappresentano le variabili
e poi eseguire "a mano" il codice riga per riga riportando
sul foglio le variazioni nei valori. (Non sto scherzando).
Per maggiori informazioni sul tuo codice, invece, rivolgiti
al gruppo relativo al C++, ovvero
it.comp.lang.c++
visto che il pezzo di programma che hai riportato
e' in C++ e non in C (che e' l'argomento di
discussione di questo gruppo).
ciao,
v.

IOL? INFO1?  :-)
Bye,
Raktzo

Raktzo
Tanato! ;-)


> Tanato! ;-)
riposta in it.comp.lang.c++
Bye,
Raktzo

> Tanato! ;-)

grazie, ma nel frattempo ho risolto.
sara' stata la stanchezza...


Newsgroup: it.comp.lang.c
Titolo: da intero a stringa

Mi occorreva una funzione che trasformsse un'intero in una stringa e percio' 
non trovandola ne ho creata una, ne esiste una standard?
Penso che la soluzione piu'bella sarebbe una specie di printf() che 
restituisca la stringa formattata piuttosto che stamparla a video, esiste 
qualcosa di simile?
grazie
Barry



si`: sprintf(stringa, "%d", intero)
-- 
Ciao, Giuseppe

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

Ho Bisogno Di funzioni Su Alberi, COPIA CANCELLAZIONE, TUTTO QUELLO CHE
AVETE é BEN ACCETTO. GRAZIE STEFANO.



mandami 3.000.000 (quello che guadagni in un giorno no?) e poi io ti
do tutte le funzioni che vuoi
--
[ranger, email: 
ran...@queen.it
]
ICQ# 6585343

Newsgroup: it.comp.lang.c
Titolo: Auguroni a tutti di buone feste !!!

Come da oggetto Dave.

 Come da oggetto Dave.
mi associo :P

 Come da oggetto Dave.
 
Grazie e altrettanto a tutto il gruppo.
-- 
oOO()             |Nicholas Wieland|
/ _/              |nicholas_wieland|
|/ [ Step on the ]|    @
yahoo.it
   |
\_)[  right foot ]|________________|

 Come da oggetto Dave.
grazie tante
contraccambio a te e tutti i lettori/scrittori ;)


Tanti auguri di buon Natale e felicissimo anno anche a voi.
Ciao,
Luigi

.. mi associo anch'io.
Buone feste a tutti!
Newsgroup: it.comp.lang.c
Titolo: buon libro sul c

ciao a tutti, vorrei sapere il titole ed il prezzo di qualche libro sul
c, ma che non costi esageratamente (fino 25-30 euro sono anche disposto
a spenderli) voi che mi consigliate?
Grazie un saluto!
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

a spenderli) voi che mi consigliate?
Io ti consiglio
Brian Kernigham, Dennis Ritchie
"Linguaggio C - Ansi C", seconda edizione
Jackson Libri (ora costera' sui 20 euro).
Qualcuno ti consiglierebbe il Deitel&Deitel (il titolo ora non lo so,
ma non dev'essere difficile da trovare).
Non mi piace tantissimo la loro impostazione: troppo didattica... un
testo buono per iniziare, ma che usi difficilmente come riferimento in
futuro, mentre il K&R lo consulterai sovente.
-- 
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."

 
Anche se è sicuramente fuori dal tuo budget iniziale (circa 50 Euro) "La 
guida completa C" di Herbert Shildt, editoreMcGraw Hill. E' un'opera che 
sicuramente merita quello che spendi e che può tornarti utile anche dopo 
diverso tempo.

 diverso tempo.
Penso che, oltre al costo, ci sia da evitare qualsiasi libro di Schildt
riguardo il C/C++.
http://www.accu.org
Ciao,
 Emmanuele.
-- 
Emmanuele Bassi (Zefram)           [ 
http://www.radiance.d2g.com/~zefram
 ]
GnuPG Key fingerprint = 4DD0 C90D 4070 F071 5738  08BD 8ECC DB8F A432 0FF4

 guida completa C" di Herbert Shildt
Per carita' ! state lontani dai libri di Schildt.
Vedere 
www.accu.org
 per le recensioni.


salve a tutti
mi piacerebbe sentire un vostro parere sui testi di Schildt
(sono già andato su 
www.accu.org
 , ma l'inglese non è il mio forte)
spiegatemi cosa c'è di tanto orribile nel testo di schildt sul C
(stavo giusto andando a comprarlo...)
Grazie

(stavo giusto andando a comprarlo...)
Meno male, un'altra anima salvata in tempo.


 futuro, mentre il K&R lo consulterai sovente.
-- 


E' in italiano vero? se si domani mattina lo vado a comprare!
Sono tutti e 2 in italiano.
P.S.  Dovresti rispondere sotto il testo quotato, non sopra :)


Newsgroup: it.comp.lang.c
Titolo: Combo box in C

Qualcuno potrebbe farmi degli esempi su come poter accedere alle
proprietà di un combo box inserito in una finestra utilizzando
semplicemente funzioni in C ed utilizzando Visual Studio 6.0

 semplicemente funzioni in C ed utilizzando Visual Studio 6.0
Per problemi specifici di piattaforma (sia essa Linux, Unix, DOS, 
Windows) č bene rivolgersi al ng specifico.  In questo caso č 
it.comp.programmare.win32.
Newsgroup: it.comp.lang.c
Titolo: problemi con il c

Ciao.. mentre di c++ ne so qualcosa...in c non capisco niente.
Se volessi scrivere questo in c come si fa???
cout<<"il tempo di RTT nella connessione "<<i+1<<" e':
"<<tempo[i]<<endl;

 wrote

Non fai prima a studiare su di un libro di C o almeno una guida online?
inoltre avresti dovuto dire di che tipo e' tempo[i].
Tommaso
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

concico ha scritto:

Se i e tempo[i] sono interi, puoi usare printf in questo modo:
printf("Il tempo di RTT nella connessione %d e': %d\n",i+1,tempo[i]);
Comunque il c e' diverso dal c++ per molti aspetti, quindi non ti 
conviene impararlo a tentativi (sempre che ci riesci), perche' fai solo 
casino.
-- 
Devaraja (Xdevaraja87^gmail^c0mX)
Linux Registerd User #338167
http://counter.li.org

scusa se possono infastidirti le mie domande ma mi devi credere che non
ho tempo per imparare anche il c...quindi chiedo dei consigli ....

 ho tempo per imparare anche il c...quindi chiedo dei consigli ....
Se non hai il tempo di imparare il C allora paga un consulente e fai le
domande a lui (in alternativa un tuo amico).
Questo NG non si usa per far fare agli altri le cose che devi fare tu.
Se vuoi imparare e sforzarti allora questo e' il posto giusto. Se invece
scrivi solo per non dover perdere tempo tu stesso dimmi perche' dovrei
perdere io il mio tempo per non farlo perdere a te?!?
In fine, le tue domande tendono ad essere OT e non aver nulla a che fare
con il NG in cui scrivi (tipo quella sulle socket); e quando come questa
hanno a che fare con il C la domanda e' cosi' banale che indica che non
ti sei sforzato.

Newsgroup: it.comp.lang.c
Titolo: Funzione random

Ciao a tutti, scusatemi per la banalità della mia domanda ma sto imparando
adesso il C.
Come posso crearmi una funzione random che mi selezioni trai numeri
1,2,3,4,5,6,7 ?
Grazie a chi mi risponderà

 1,2,3,4,5,6,7 ?
#include <stdlib.h>
int main{
    int caso, ciclo;
    srand ((unsigned) time(NULL));
    for (ciclo=0; ciclo < 10; ciclo++){
        caso = (rand()%7) +1;
        printf ("%d\n", caso);
    }
}
--
Alessandro Monti

 Grazie a chi mi risponderà
Esiste una funzione (non ricordo in che libreria) chiamata proprio random
#define MAX_NUM 8
main()
{
int casuale;
casuale=random(MAX_NUM)
}
quseto stralcio di programma mette nella variabile intera casuale un numero
casuale compreso tra 0 e MAX_NUM-1

1,2,3,4,5,6,7 ?
#include <stdlib.h>
int randomia() 
{
    return ( 1 + rand() % 7 ) ;
}
Non so, pero', quanto sia efficace in termini di casualita'.
--
Andrea Laforgia
andrea_...@bigfoot.com

Esiste una funzione (non ricordo in che libreria) chiamata proprio random
Non "random", ma rand() e srand() in "stdlib.h".
--
Andrea Laforgia
andrea_...@bigfoot.com

 Non so, pero', quanto sia efficace in termini di casualita'.
Non molto. Secondo le FAQ un sistema migliore sarebbe
return rand() / ( RAND_MAX / 7 + 1 );
EMG

 
Risposta stupida e non troppo corretta, perche' i bit meno
significativi del valore tornato da rand() non sono poi molto casuali:
numero = (rand()%7) + 1;
 Ciao, Luca.
 Reply to 
luca....@tiscalinet.it

 ha scritto:

scusa ma non dovrebbe essere
return 1 + rand() / (RAND_MAX / 7);
per avere un numero tra 1 e 7 estremi inclusi?


 per avere un numero tra 1 e 7 estremi inclusi?
Certo. Pare proprio ci sia un errore nella FAQ ufficiale.
EMG

 Certo. Pare proprio ci sia un errore nella FAQ ufficiale.
Non direi, visto che nella FAQ si dice che 
   rand() / (RAND_MAX / N + 1)
restituisce numeri tra 0 e N-1 (13.16).
Ciao ciao,
Andrea
-- 
"...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and 
 the Ugly)."
(by Matt Welsh)

 per avere un numero tra 1 e 7 estremi inclusi?
Ma cosa succede se rand() restituisce RAND_MAX ? 
Probabilmente dovresti usare
   return 1 + rand() / (RAND_MAX / 7 + 1)


 restituisce numeri tra 0 e N-1 (13.16).
Infatti c'è un errore nel mio cervello, non nella FAQ... :-(
EMG

 
Porca vacca, te ghe' rasun!, come direbbero dalle mie parti ;-)

Newsgroup: it.comp.lang.c
Titolo: Help programmare seriale RS232 in C

Salve,
qualcuno mi sa indicare un sito dove trovare qualcosa  o dare qualche
suggerimento su come programmare la seriale in C (ho il borland 4.0)
Anticipatamente  grazie a tutti.
Valerio


Se lavori in DOS, ho il sospetto che devi utilizzare bioscom() che e'
una funzione del BIOS.
ciao
Enrico

 > suggerimento su come programmare la seriale in C (ho il borland 4.0)


come se si trattasse di file?
Quanto sopra mi porta a fare il seguente ragionamento (e domanda).
Se le porte COM e LPT le apro e le associo ad uno stream, poi posso
scrivere verso le porte con dei normali fprintf(). Giusto ?
Dalla porta COM posso andare a leggere, penso, con fgets e quindi la
domanda e' : posso andare a leggere dalla porta LPT1 con una fgets o
simili.
In caso di risposta affermativa : si puo' avere un piccolo esempio ?
grazie
ciao

 simili.
Temo di no in quanto non credo sia presente nel DOS il supporto alla
lettura della LPT1. In pratica è considerato un file write-only.
EMG

Eppure la stampante comunica con il sistema, no? La mia HP Deskjet ad esempio
notifica l'esaurimento della carta, l'apertura dello sportello, la sostituzione
delle cartucce, ecc... Qualcuno ha già provato a leggere dalla parallela?


lettura della LPT1. In pratica è considerato un file write-only.
Che sfiga ! Va beh, grazie.
ciao

 delle cartucce, ecc...
Si, ma quei segnali vengono gestiti con porte di input dedicate e non
attraverso il file system.
EMG

Eppure la stampante comunica con il sistema, no?
Continuando le ricerche ho trovato un programma che implementa una
specie di client / server su due PC collegati attraverso la parallela.
Siccome del programma c'e' anche il sorgente in C (con pezzi
d'assembler) se interessa lo posso mandare in e-mail. Il file si
chiama PPORT.ZIP, e' grosso circa 28 KB e dovrebbe trovarsi sul sito
Simtel (non ho la URL esatta in quanto io l'ho trovato in una vecchia
raccolta di software DOS)
ciao

 specie di client / server su due PC collegati attraverso la parallela.
Beh, si, anche il classico LapLink lo fa ma certo non si può fare in C
standard.
EMG

valvern ha scritto:

Ho sperimentato lettura e scrittura dati sia su lpt che su seriale, non ho
mi però utilizzato funzioni per la scrittura dei file, ho semplicemente
fatto queste operazioni all'indirizzo corispondente della porta, per quanto
riguarda la seriale è facilmente utilizzabile settando i vari registri
divisori del buffer per la velocità e recuperare sempre dai vari registri i
valori per conoscere lo stato delle varie linee DCD ecc.
Per quanto riguarda la parallela molti tentano di effettuare lettura sulle
uscite d0-d7, ma questo sul 99,9 % delle main board non è possibile, per
effettuare una lettura da lpt e necessario multiplexare 4 registri di
ingresso, non vorrei sembrare complicato ma alla fine è una cosa
estremamente semplice... cercate della documentazione presso qualche
istitituto tecnico industriale... Salutoni.