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

Dove posso trovare CodeWarrior gratis?
Grazie
--
Amedeo Simeone
------------------------------------------------------------------------
"fatti non foste a viver come bruti,
ma per seguir virtute e conoscenza."
Dante, Divina Commedia - Inferno XXVI, vv 119-120

 ha scritto nel messaggio
news:at4943$19o$1...@newsfeed.cineca.it...

www.metrowerks.com
Mi sembra sia gratuito.
Adesso chiedo ai colleghi...

ti ringrazio
--
Amedeo Simeone
------------------------------------------------------------------------
"fatti non foste a viver come bruti,
ma per seguir virtute e conoscenza."
Dante, Divina Commedia - Inferno XXVI, vv 119-120
"Z" <xx...@xxxx.xx> ha scritto nel messaggio
news:at4jjl$p2a$1...@lacerta.tiscalinet.it...


Newsgroup: it.comp.lang.c
Titolo: trasformata wavelel 1d cerco

Qualcuno č cosě gentile dirmi dove posso trovare una
librerie per c++ o c , che esegua la trasformata wavelet 1D.
                                    Grazie tante.

 ha scritto nel messaggio
news:8brc2a$cnr$1...@nslave1.tin.it...


Newsgroup: it.comp.lang.c
Titolo: Librerie Matematiche

CIAO!!!!!!!!!!!!!
Qualcuno mi sa dire se ci sono delle librerie matematiche free in c, con
sorgenti disponibili per l'integrazione di equazioni differenziali?
Vi saluto e vi auguro buona pasqua
-- 
 ("`-''-/").___..--''"`-._                  Luigi Palopoli
   `6_ 6  )   `-.  (     ).`-.__.`)          Phd Student
   (_Y_.)'  ._   )  `._ `. ``-..-'      Scuola Superiore S. Anna
 _..`--'_..-_/  /--'_.' ,'               Via Carducci 40 - 56100
(il),-''  (li),'  ((!.-'                    Pisa - Italy
                                   Tel. +39-50-883451 Fx +39-50-883452
					email: 
palo...@sssup.it


Realmente free le trovi su Netlib all URL '
http://ftp.unina.it:21006/
'
altrimenti ci sono i sorgenti delle funzioni descritte nel 'Numerical
Recipes'  per questo puoi cercare in giro su internet.
In tutti e due i posti proverai di tutto e di piu' sul calcolo numerico
Marco Colandrea
Newsgroup: it.comp.lang.c
Titolo: albero trie

ciao
devo scrivere un struttura dati trie in c
ma non so da dove iniziare
mi potete dare qualche suggerimento da dove
iniziare?

leggi il post IMPLEMENTAZIONE DI UN DIZIONARIO
Ciao Re Di Cuori
"rino" <ri...@pc.casa> ha scritto nel messaggio
news:924p1u$50n$1...@nread1.inwind.it...


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

Salve a tutti.
Innanzitutto scusate se sto qui a rompere con il classico problema ma mi
serve per un compito.
Allora, premesso che so come ottenere dei numeri casuali, premesso che non
sono le prestazione che vado cercando vorrei sapere due cose:
utilizzando le classiche funzioni rand() e srand():
1) come posso ottenere numeri casuali compresi in un intervallo che però non
sia per es. da 1 a 100, ma per esempio da 65 a 90?
2) come posso ottenere delle lettere, maiuscole o minuscole, a caso?
Grazie a chiunque mi risponderà.
---Seek and Destroy---

 ha scritto nel messaggio
news:niJa6.15455$lV5.2...@twister1.tin.it...


 wrote in message
ShZa6.110830$eB2.8...@news.infostrada.it...


 per ottentere la minuscola basta sommare 32 .
direi piuttosto che la prima lettera maiuscola ha codice 'A', no?
rony.
char LetteraCasuale(bool maiuscola) {
  char lunghezzaAlfabeto = 'Z' - 'A';
  char casuale = (char) (rand() % lunghezzaAlfabeto);
  if (maiuscola)
    return 'A' + casuale;
  else
    return 'a' + casuale;
}

Newsgroup: it.comp.lang.c
Titolo: sbloccare una operazione di lettura da uno stream

Salve a tutti
leggendo da uno stream di ingresso (proveniente da una stampa via usb)
non ho modo di ottenere il Eof dallo stream.
Per leggere dallo stream mi avvalgo della funzione read che segue:
#include <unistd.h>
ssize_t read(int fd, void *buf, size_t count);
la funzione infatti rimane bloccata in lettura sino a che non riceve
dei dati in ingresso dallo stream. Non venendomi inviato alcun
carattere di Eof ho bisogno di riconoscere la fine di un file e
l'inizio di un altro.
Si è pensato di far partire un processo che dome un certo time-out si
risveglio e in un qualche modo va a sbloccare la read..
Ma come??? esiste un modo per interrompere la read? 
grazie mille
ilcario && ilmaina


premesso che non si tratta di una domanda di c++, puoi fare una cosa del
tipo
<imposto un handler per SIGALRM>
alarm(5);
res=read(...);
alarm(0);
if(res==-1){ // la read è stata sbloccata }
else { }
in questo modo se la read resta bloccata per 5 secondi, scatta l'alarm e
viene chiamata la funzione handler, terminata la quale il programma può
proseguire
per ulteriori informazioni ti consiglio un bel man alarm
--
Pela

 ssize_t read(int fd, void *buf, size_t count);
Il tuo programma fa uso di funzioni che non fanno parte del linguaggio C 
standard, ma sono caratteristiche di un particolare sistema operativo. 
Dovresti quindi rivolgerti al gruppo di discussione relativo (se lavori 
sotto GNU/Linux, il gruppo in questione e` it.comp.os.linux.development).
Newsgroup: it.comp.lang.c
Titolo: Compilatore c

Mi consigliate un buon compilatore c che sia compatibile con il gcc?

 Mi consigliate un buon compilatore c che sia compatibile con il gcc?
Prova con Dev-C++

 Prova con Dev-C++
Che e' un IDE, non un compilatore...
-- 
Devaraja (Xdevaraja87^gmail^c0mX)
Linux Registerd User #338167
http://counter.li.org

 
Che e'possibile scaricare con mingw, il quale e' porting di gcc...

Manuel ha scritto:

Dev-C++ non e' comunque un compilatore, con qualunque cosa venga 
scaricato. Tu lo sai, ma tanti altri no, quindi e' meglio specificare, 
soprattutto perche' il ng e' letto da esperti ma anche da gente che sta 
ancora imparando (tra questi ultimi ci sono io).

Newsgroup: it.comp.lang.c
Titolo: Puntatori, sto impazzendo.

Ciao a tutti,
ho un problema che cerchero' di spiegare il piu' chiaramente possibile.
Ho un file di testo di questo tipo:
Frase di testo con spazi <tab> intero <tab> intero
ecc
Sono riuscito mediante strtok a leggere la prima parte della riga,
(quella contenete il testo) e metterla in una variabile *char.
Ora pero' io devo creare una lista che in ogni elemento contenga una
stringa e poi i due numeri.
Il mio problema e' che nella procedura leggi_file metto l'elemento nella
lista con:
head=temp /*head e' definita fuori dal main come static*/
temp->stringa = (strtok(parola,"\t"));
Se a quasto punto faccio una printf di temp->stringa funziona.
Il problema e' che quando la procedura finisce al raggiungimento
dell'eof e dal main viene chiamata la procedura di visualizzazione che
partendo da head scorre la lista non vede niente nel campo.
Ho provato ad inserire dei valori nella lista con temp->stringa="prova"
e queste linee vengono stampate.
Anche linee lette con sscanf vengono stampate (ma non posso usare sscanf
perche' quando incontra il primo spazio si ferma).
Quello che ho pensato e' che con l'assegnamento che faccio gli passo
solo l'indirizzo e quindi quando vado nella funzione di visualizzazione
non e' piu' corretto.
Sto letteralmente impazendo.
Come  posso risolvere il problema?
Spero di essere riuscito a spiegarmi.
Grazie in anticipo a tutti per l'aiuto.
wo...@intercom.it

e queste linee vengono stampate.
Non puoi assegnare dei valori alle stringhe in questo modo !!!
Gli array di caratteri sono insiemi costruiti e non possono essere
trattati dal compilatore come un'unica entita' in questo genere di
operazioni.

 operazioni.
A meno che stringa non sia un puntatore, nel qual caso l'assegnazione
della stringa costante è bruttina ma corretta.
EMG



Si', questo vale per l'assegnazione di una stringa costante, ma, in
generale, e' bene tener presente che se si ha :
char *a, *b ;
a = malloc ( 10 ) ;
a = "andrea" ;    /* assegnazione corretta */
b = malloc ( 20 ) ;
b = "giuseppe" ;  /* assegnazione corretta */ 
Scrivere 
a = b ;           
non equivale ad un'assegnazione tra valori puntati, che invece va
compiuta con :
strcpy ( a, b ) ;
Voglio dire : nel programma precedente (sempre supponendo che temp sia
una struttura in cui stringa e' dichiarata come char *stringa) puo'
andar bene la sintassi :
temp->stringa = "prova" ;
ma e' sbagliato scrivere :


 a = "andrea" ;    /* assegnazione corretta */
Non mi sembra molto corretta. In questo modo perdi l'indirizzo dell'area
allocata che pertanto non potrai piů deallocare.
EMG

 b = "giuseppe" ;  /* assegnazione corretta */
Sei sicuro?
forse volevi scrivere:
char *a = "andrea" ;    /* assegnazione corretta */
char *b = "giuseppe" ;  /* assegnazione corretta */
Ciao, Marco

allocata che pertanto non potrai piů deallocare.
...Ops...hai ragione (basta eliminare i malloc) ...
Newsgroup: it.comp.lang.c
Titolo: Linux funzione Close bloccante

Ciao a tutti
Ho scritto una funzione in C che verifica se il modem è attivo o meno,
semplicemente inviando comandi AT
Eseguo le seguenti istruzioni e tutto funziona bene, ad eccezione se il
modem è spento la close() si inchioda!!!
int fd;
...
...
fd = open(cModem, O_RDWR | O_NOCTTY | O_NONBLOCK);
if (fd != -1)
{
  strcpy(cCommand,"ATZ\r");
  iLen = strlen(cCommand);
  memset(buffer, '\0', sizeof(buffer));
  if (write(fd, cCommand, iLen) == iLen)
  {
    bufptr = buffer;
    sleep(1);
    while((nbytes = read(fd, bufptr, buffer + sizeof(buffer) - bufptr - 1))
 > 0)
    {
      bufptr += nbytes;
    }
    *bufptr = '\0';
  }
}
//Chiusura file descriptor...
if (fd != -1)
{
  close(fd);
  fd = -1;
}
Se avete consigli !!!
Grazie
Donato

 semplicemente inviando comandi AT
E qui sei OT: it.comp.os.linux.development
-- 
Mat/tia Belletti - Undergraduate student @ 
cs.unibo.it
ICQ: 33292311    - email: 
mbel...@cs.unibo.it
IRC: RedGlow     - site(s): 
http://mbellett.web.cs.unibo.it/
Jabber: RedGlow  - Linux registered user 299762 @ machine 213003
Newsgroup: it.comp.lang.c
Titolo: principiante assembler

Sto cercando di imparare a programmare in assembler e utilizzo il
compilatore Visual C++ della Microsoft,
ho creato un file.c all'interno del quale ho messo questo codice:
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
  char stringa='c';
  __asm mov ah,02h;
  __asm mov dl,stringa;
  __asm int 21h;
  return 0;
}
Ora la compilazione va a buon fine, perņ quando eseguo l'exe mi da un errore
di protezione generale;
- ho fatto il debug e il problema si verifica sull'invocazione dell'int
- ho provato a utilizzare il #pragma inline
Dov'č l'errore???

   __asm mov dl,stringa;
                 ^^^^^^^
  E` molto probabile che nel registro DL ci vada l'indirizzo di
/stringa/ e non il suo valore. Prova a chiedere in
	news:it.comp.programmare,
li` ti sapranno dire...
	Alla prossima,
		Marco

> Dov'è l'errore???
Come per la grafica, l'int del dos non lo puoi usare in un'applicazione
consolle win32

 wrote in message 8kf7j9$918$1...@agnus.ngi.it...
| Come per la grafica, l'int del dos non lo puoi usare in un'applicazione
| consolle win32
Col VC++, no, col djgpp, si.

> Col VC++, no, col djgpp, si.
che come ti ho detto nell'altro post č un compilatore per dos e i files
creati
differiscono da un'applicazione win32 console per il fatto che all'inizio
inizializzano (eheh) la modalitą 32 bit e devono appoggiarsi ad un programma
esterno,
mentre un'applicazione console Win32 č gią a 32 bit e accede alla memoria
tramite le funzioni di sistema. Al contrario un' applicazione dos P/M se
fatta
funzionare in win32 utilizza le sue funzioni come server, ma potresti usarne
altre
(CWSDPMI con djgpp). E invece un'applicazione win32 funziona solo con win
ciao

 wrote in message 8kf7j9$918$1...@agnus.ngi.it...
| Come per la grafica, l'int del dos non lo puoi usare in un'applicazione
| consolle win32
|
| > Col VC++, no, col djgpp, si.
|
| [djgpp] č un compilatore per dos e i files creati differiscono da
| un'applicazione win32 console per il fatto che all'inizio inizializzano
| (eheh) la modalitą 32 bit e devono appoggiarsi ad un programma esterno,
[...]
| un'applicazione win32 funziona solo con win
Stiamo fondalmente dicendo le stesso cose, credo.
Newsgroup: it.comp.lang.c
Titolo: dove???

Salve, dove potrei trovare (in rete) un ambiente di programmazione ansi c
completo e gratuito??
Grazie mille
Phantomas
ICQ # 25304214
"I don't wanna hear from those who know
They can buy but can't put on my clothes"

 completo e gratuito??
Se ti serve per MS-DOS:
http://www.delorie.com/djgpp/
EMG
Newsgroup: it.comp.lang.c
Titolo: domanda

Come si compila e si linka un programma in c utilizzando gcc per linux?

 Come si compila e si linka un programma in c utilizzando gcc per linux?
Compili &  linki con  gcc: "gcc  prova.c" ti  genera un  file eseguibile
chiamato a.out, che puoi far partire  con "./a.out". Per dare un nome al
file eseguibile, usa "-o": "gcc prova.c -o prova".
Con  "gcc -c  prova.c" ti  genera  un bell'oggetto  "prova.o" (Che  puoi
sbirciare con "objdump -D prova.o") che potrai linkare usando il comando
"ld" ("ld prova.o").
Per maggiori informazioni, ti raccomando  la lettura di "man gcc", "info
gcc" e magari dei manuali GNU che trovi su 
www.gnu.org
.
-- 
                                                                     __
 __                                                              _  ///
| _        Student in Computer Science, Swiss Federal Institute  \\///
|__|iambo      of Technology - mailto:
ggia...@iiic.ethz.ch
       \X/

 Come si compila e si linka un programma in c utilizzando gcc per linux?
<mdi mode=on>
man gcc (e info gcc)
man ld
</mdi>
+++
<serni mode=on>
Usi gcc per compilare *ma non* linkare (gcc -c prova.c) e ti trovi un
bel file `prova.o'. Per linkare, o dai in pasto tutti gli .o ancora a
gcc, oppure linki tutto con ld.
</serni>
-- 
Emmanuele Bassi         |  Linux: [ 
http://digilander.iol.it/ebassi/linux/
 ]
                        |   SLRN: [ 
http://digilander.iol.it/ebassi/slrn/
  ]
emmanue...@iol.it
  |   SETI: [ 
http://digilander.iol.it/ebassi/seti/
  ]
  GnuPG Key Fingerprint: 9747 635E B95A B0B3 4370 1CAA CAF7 512B 945C A44C

 "ld" ("ld prova.o").
IN gnere si preferisce usare la forma
gcc -o prova prova.o
Il vantaggio e' che gcc include di per se alcune librerie...

Newsgroup: it.comp.lang.c
Titolo: apparente bug in ld.exe o mia idiozia?

Ciao a tutti...
è da giorni che cerco di linkare una libreria, ma non ci riesco. Ora
vi spiego il problema.
se avvio ld.exe e linko un semplice file obj tutto ok; ma se aggiungo
l'opzione "-l <libreria.a> <fileobj.o>" mi viene restituito un errore.
L'errore viene restituito perché ld.exe cerca il file "-l<libreria.a>
....".
Il programma non vede lo spazio che è inserito tra -l e il nome del
file. Lo stesso accade se uso l'opzione analoga -Library.
Il linker è compreso nel pacchetto del djgpp (last version) scaricato
da 
www.delorie.com
.
Qualcuno sa come risolvere il problema? oppure potrebbe inviarmi un
linker funzionante e compatibile con gcc?
Grazie mille...
PS:non fate caso agli errori... ho una fretta incredibile...

 file. Lo stesso accade se uso l'opzione analoga -Library.
se devi far lincare piů di una libreria devi aggiungere sempre il
prefisso -l.
Ad esempio:
LIBS= -lm -lmialib
OBJECTS= mioFile.o
LDFLAGS= -ggdb
LD= gcc
pezzo tratto da mekefile
all: $(OBJECTS)
    $(LD) $(LDFLAGS) -o $(TARGET) $(OBJECTS) $(LIBS)
Ciao.
Maurizio
P.S.: eliminare _NO_SPAM per rispodere in privato

 linker funzionante e compatibile con gcc?
ld è il linker di gcc, del resto ti indicano di scaricare quello , non
altri. Ciao

Newsgroup: it.comp.lang.c
Titolo: scansione file con sscanf

Ho un file con una riga di questo tipo :
$password = ********
dove gli asterischi sono i caratteri della password cifrati con un
algoritmo  .
Quando vado a decriptare la password , non c'č verso di recuperare la
stringa .
Ecco il codice incriminato e... grazie a tutti in anticipo !!!
#define L_LINE 80+1
 char line[L_LINE]; /* per lettura linee */
 char s1[80+1];
 char passEncripted[10];  /* password criptata */
char passDecripted[9];  /* password decriptata */
 int ret;
 int n_pos; /* posizione nella stringa contenente la password */
 int f_end; /* flag di fine scansione */
 f_end = FALSE;
 *passDecripted = '\0'; /* non sa se la password esiste */
 /* legge ed analizza tutte le righe contenute nel file, fino alla
 fine file o fino ad un marker di fine sezione (f_end settato) */
 while (fgets(line, L_LINE, fp) != NULL && f_end == FALSE)  {
  if (sscanf(line, " $password= %80s", s1 ) == 1) {  /* se trova
password */
   for( n_pos = 0 ;n_pos < 8 ; n_pos++ ) { /* scorre la password */
   passEncripted[n_pos] =s1[n_pos];
   }
   for( n_pos = 0 ;n_pos < 8 ; n_pos++ ) { /* scorre la password */
        /* decifra .....*/
   }
   passDecripted[9] = '\0';
   f_end = TRUE;
  }
 }
Note : fp č un FILE* gią aperto correttamente,



 Ecco il codice incriminato
Manda un piccolo sorgente compilabile ed eseguibile e forse sarai
aiutato.
EMG

Newsgroup: it.comp.lang.c
Titolo: algoritmi di compressione

Avrei un certo bisogno urgente di sapere abbastanza nel dettaglio come
funziona l'algoritmo RLE,LZ (tutte le varianti possibili),e magari
huffman.Gli ultimi due non sono necessari(ho gia' qualcosa)ma l'RLE e'
di vitale importanza.Se qualcuno Avesse anche i sorgenti...bhe'...lo
ringrazierei tanto...
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG


I'm not prejudiced, I hate everyone equally.
Newsgroup: it.comp.lang.c
Titolo: Cerco compilatore GUI C  Linux compatibile con le Posix

Volevo sapere se per caso qualcuno puņ cosgiliarmi un compilatore GUI  C
sotto Linux Ubuntu che compili tutto in automatico le posix senza
ogni volta compilare a riga di comando il sorgente.Ad esempio per compilare
pippo.c che contiene dei therad, ogni volta devo  scrivere
gcc pippo.c -o pippo -lpthread , invece mi piacerebbe utilizzare un
compilatore GUI che lo facesse in automatico
Ho usato netbeans6 e sunstudio12 che si appoggiano al gcc e funzionano
benissimo ma non riesco a compilare il sorgente con
l'opzione -lpthread. D'altra parte nelle opzioni del programma non c'č la
possibilitą di inserire l'opzione -lpthread per il gcc,ma solo per
il makefile.

 il makefile.
Guarda che il makefile serve proprio per fare quello che chiedi.
Non esistono compilatori GUI, ma puoi usare un IDE che ti prepara le 
opzioni nel Makefile.
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   Registered Linux user #337974  < 
http://giovanni.homelinux.net/
 >

 ha scritto nel messaggio 
news:g7m37r$2fd$2...@milena.home.net.it...


 gcc pippo.c -o pippo -lpthread  con il makefale?
L'essere principianti è una cosa a cui si ovvia leggendo manuali e facendo
esperienza.
Almeno prenditi la briga di googlare.
-- 
|_|0|_| - Salvatore Iovene
|_|_|0| - Website:  
http://www.iovene.com/
|0|0|0| - Key:      
http://www.iovene.com/pubkey.asc
------- - Webcomic: 
http://geekhero.iovene.com/

 gcc pippo.c -o pippo -lpthread  con il makefale?
Nella sua forma più semplice il makefile deve contenere la regola che 
hai scritto, cioè:
-----------
CFLAGS	= <lista di flags da passare al compilatore>
pippo:	  pippo.c
	$(CC) $(CFLAGS) pippo.c -lpthreaad -o $@
---------
L'unica attenzione che si deve avere è che i comandi devono iniziare 
con un tab:
KTAB>$(CC) $(CFLAGS) pippo.c -lpthreaad -o $@
Se poi il programma pippo dovrà essere generato da più file .c prova con:
-----------
CFLAGS	= <lista di flags da passare al compilatore>
OBJS	= pippo.o pluto.o paperino.o
pippo:	$(OBJS)
	$(CC) $(OBJS) -lpthreaad -o $@
-----------


 ha scritto nel messaggio 
news:g7opfl$5d2$1...@milena.home.net.it...


 si comportano peggio dei bambini!
Il il bambino che vuole la pappa pronta sembri essere tu.
E impara a quotare decentemente per favore.
Ciao Jack
-- 
Eroi non si nasce, ti incastrano
- Jim Belushi

Newsgroup: it.comp.lang.c
Titolo: I/O

Grazie
Prego.
Cmq mi sa che qua siamo 1 po OT ...
Ciao

oppure il Kerningham & Ritchie !
Si chiama "Kernighan".
--
Andrea Laforgia (ICQ 87230455)
"ci sono tre tipi di persone nel mondo : quelli che
 sono bravi in matematica e quelli che non lo sono."

Si chiama "Kernighan".
Opsss ...  orrore di stompa ...
Ciao
Newsgroup: it.comp.lang.c
Titolo: Ordinamento di bit

Salve.
ho delle difficolta' nel capire come sono scritti i dati in memoria.
char datas[2];
datas[0] = 65; //e' la A
datas[1] = 77; //e' la M
Se io ora vado a fare printf di datas mi apparira' la scritta "AM". E fin 
qui torna.
datas[0] = 244; 
datas[1] = 1; 
quint16 num = 0;
memcpy( &num, datas, 2);
dentro num ora ho il decimale 500!
e questo non mi torna per niente.
Il 500 tradotto in in binario occupa 8+8 bit: "0000 0001 1111 0100" .
Io ho preso i primi 8 meno significativi "1111 0100" (in decimane 244) e 
li ho messi in fondo a data:
data[1] = 244
poi ho preso gli altri 8 (rimane solo un uno) e li ho messi in data[0].
Così pero nn funziona per nulla.
Per esempio anche in un qint32 :
datas[0] = 0;
datas[1] = 2;  
datas[2] = 4;
datas[3] = 8;
quint32 num = 0;
memcpy( &num, datas, 4);
in numero ho 134480384 che in binario fa: "0000.1000" "0000.0100" 
"0000.0010" "0000.0000"
ma non sono al contrario??
Grazie

 
ah!
http://it.wikipedia.org/wiki/Ordine_dei_byte
Newsgroup: it.comp.lang.c
Titolo: cb utility

salve
mi sapete dire a cosa serve questa cb   ("C beautifier") utility ? e per
cosa e' usata l'archiver or librarian utility ?
grazie

 ha scritto nel messaggio
news:ey%l8.47552$1S3.1...@twister1.libero.it...

Ho ricevuto questa informazione sulla cb utility:
C Beautifier (cb) e' un programma unix (e linux) che, dato un qualsiasi file
sorgente C, ne produce uno in output equivalente ma indentato.

Newsgroup: it.comp.lang.c
Titolo: Borland Turbo C 2

Ciao raga,
qualcuno di voi usa questo compilatore?? Vorrei poter salvare tutti i miei
file .c .obj e .exe nella cartella c:/code ma nn riesco a farlo settando le
Options del compilatore... come devo fare?? Mi salva in automatico nella
cartella c:/tc ma nn la voglio insozzare con i miei hello world...
Ciao,
^Devil^
P.S E' nato free.it.python

 ^Devil^
Ciao
---
Ramses
---
icq:39860665
http://knowledgeparty.cjb.net
http://evilz0ne.cjb.net

Grazie mille per la reply
Ciao,
^Devil^
Newsgroup: it.comp.lang.c
Titolo: smart card

ciao a tutti,
qualcuno sa come poter leggere/scrivere dati da una smart card?
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

> qualcuno sa come poter leggere/scrivere dati da una smart card?
Se vogliamo rimanere IT con outb() e inb().
Per scivolare OT, la tua domanda è parecchio vaga.
Che tipo di smartcard?
Newsgroup: it.comp.lang.c
Titolo: Leggere nome del file

avete delle info su come leggere un nome
di file presente in un cartella, con djgpp
e mingw.
Ciao

Z.zen ha scritto:

Su djgpp non l'ho provato, ma mingw supporta opendir e compagnia (google 
opendir)

 (google opendir)
ti ringrazio.

Newsgroup: it.comp.lang.c
Titolo: [OT] codici html

ciao a tutti,
devo scrivere una funzioncina che estragga il solo testo di un file xml.
Quel che ho fatto sembra funzionare (mi basta cercare i tag <TEXT> e 
</TEXT>, niente di esoterico...) ma devo anche sostituire tutti i codici 
del tipo &egrave; con il carattere corrispondente...
io mi/vi chiedevo: non esiste già qualche libreria che faccia questo 
lavoro di traduzione? non mi va di scrivere a mano uno switch lungo 
pagine e pagine...
grazie mille!
andre

 andre

Newsgroup: it.comp.lang.c
Titolo: Funzioni e strutture

 Se ho ben capito in pratica in C si usano delle funzioni per reimpire
determinate strutture e si opera sui dati di esse................ho
ragione???
Tnk

Kleidemos wrote:

Beh, si fa anche questo.... 

Anche?


 Anche?
Non è obbligatorio usare funzioni per riempire una struttura... cmq non
credo di aver capito il senso della tua domanda

 ha scritto nel messaggio
news:9r4xb.102969$hV.37...@news2.tin.it...



ha scritto:

Per scrivermi togliete "111".


Dunque... strutture dati... algoritmi... si', hai appena definito quello 
  che fa qualunque linguaggio di programmazione, quindi anche il C :)
-- 
/**
  * 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
  */

Newsgroup: it.comp.lang.c
Titolo: tempo di chiamata a una funzione

Una domanda semplicissima!
un programma compilato in C che chiama una funzione della libreria standard, 
esempio: strchr(),     
impiega lo stesso di un programma che chiama la stessa identica funzione riscritta all'interno del programma C senza
fare uso della libreria standard ?
2) esiste una funzione C che conta le occorrenze di un carattere in una stringa ?
grazie
ciao
Davide

2) esiste una funzione C che conta le occorrenze di un carattere in una stringa ?
Non mi pare, ma e' un semplice algoritmo che lavora con complessita'
lineare:
<CODE>
int charcount (const char * string, char c)
{
int i, cont = 0;
if (string == NULL)
    return 0;
for (i=0 ; string[i] != '\0'; i++)
    if (string[i] == c)
        cont++;
return cont;
}
</CODE>
Ho fatto 2 test e pare funzionare, non dovrebbero esserci errori
evidenti, al massimo qualche errore subdolo :P
Mox :)

 2) esiste una funzione C che conta le occorrenze di un carattere in una stringa ?
<code>
	int
	strcnt(char *str, char ch)
	{
		int counter=0;
		while(*str) {
			if(*str==ch) counter++;
			str++;
		}
		return counter;
	}
</code>
-- 
Veri pirati noi siamo       Ma cosa c'e` di male?
Contro il sistema lottiamo  Ma cosa c'e` di strano?
Ci esercitiamo a scuola     Facciamo un gran casino
A far la faccia dura        Ma in fondo lavoriamo
Per fare piu` paura         Per capitan Uncino
Newsgroup: it.comp.lang.c
Titolo: Sito Newsgroup

Ciao,
volevo sapere se esiste un sito web di questo newsgroup, nel quale poter
leggere le F.a.q.
Grazie per l'attenzione
Carlo

leggere le F.a.q.
Si e no :)
Le FAQ esistono, sono un po' vecchiotte, ma sempre valide :)
Le si trovano su 
www.programmazione.it
, segui i link alla sezione C.
Esistono delle FAQ in inglese di comp.lang.c che vengono postate
periodicamente su comp.answer, ma ne puoi trovare una versione anche
su: 
http://www.eskimo.com/~scs/
 (il primo link sono le FAQ, ma anche
il resto e' interessante).
Queste FAQ sono aggiornate al 7 febbraio 99.
-- 
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."

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

Ho alcuni dubbi su stringhe ed allocazione di memoria.
quando scrivo
int main()
{
    char *str  = "stringa";
    strlen(str);
    ....
    return 0;
}
come fa la strlen ha calcolare la lunghezza di str se str non ha uno \0
finale? Debuggando ho visto che ad str non viene aggiunto lo \0 finale,
o mi sbaglio?

 
Sbagli...questa dichiarazione, aggiunge automaticamente il carattere nullo!
sarebbe "stringa\0"
idem per
char str[] = "stringa";

Ok grazie.
Ma ora ho un altro dubbio.
Se implemento una funzione con questo prototipo:
int funz(char *str);
e la uso come
funz("ssss");
anche in tal caso viene aggiunto in automatico lo \0?

 anche in tal caso viene aggiunto in automatico lo \0?
viene aggiunto ogni volta che usi i doppi apici.
I doppi apici servono per rappresentare una stringa
e una stringa in C e' un array di caratteri terminati
da uno 0.
ciao,
g.

 anche in tal caso viene aggiunto in automatico lo \0?
si. casa che non avviene invece nel caso in cui tu passi una 
roba del genere:
char a[]={'s','s','s','s'};
funz(a);
ciao.

 sarebbe "stringa\0"
Più precisamente, sarebbe {'s','t','r','i','n','g','a','\0'};

 anche in tal caso viene aggiunto in automatico lo \0?
In questo caso, "ssss" è l'array {'s','s','s','s','\0'} decaduto 
in puntatore al primo elemento.

Newsgroup: it.comp.lang.c
Titolo: Programmare in c--

Quale compilatore ( sto programmando in C--) mi consigliate x programmare
sotto windows (data ancora la mia poca dimistichezza con linux)??
Grazie e Ciao
--
--
_____________________________________________
Rossano Spagnuolo
Undergraduate Student of the Department Computer Science
at the University of Bologna
mailto:
r.spa...@tiscalinet.it

 wrote in message
91t3gp$6sb$1...@nread1.inwind.it...


DJGPP con Rhide.
www.delorie.com/djgpp
rhymes
rhy...@insieme.net

Newsgroup: it.comp.lang.c
Titolo: listare una directory e leggere dei file

Ciao a tutti,
chi mi sa dire che funzioni usare per listare una directory e in caso
ci siano dei file al suo interno aprirli e leggere cosa c'è scritto??
grazie a tutti


Dipende dal sistema operativo


linux,
devo entrare in una directory e leggere i file, che son file di testo
piccolissimi perchè sono degli sms

 piccolissimi perchè sono degli sms
perche' non usi semplicemente la shell di linux? 
#!/bin/bash
# etc. etc.
ciao


allora mi serve per leggere gli sms che vengono gestiti da smstools,
in base a cosa c'è scritto devo accendere o spegnere dei led con delle
chiamate ioctl, non so in bash come unire il tutto e poi dovrei cross
compilare bash perchè e su un sistema embedded.

 compilare bash perchè e su un sistema embedded.
allora, su "Il linguaggio C" di K & R trovi qualcosa che ti puo' essere 
utile. La spiegazione, con esempio, del funzionamento del comando 'ls' 
della shell. una volta ottenuti i nomi dei file, il gioco e' fatto.
i passaggi fondamentali sono comunque l'apertura di una directory con 
fd = open(dirname, O_RDONLY, 0)
e la lettura del contenuto con
read(fd, etc, etc, ) 
/* etc, etc, rappresenta indirizzo di una particolare struttura creata 
per leggere la directory e la sua dimensione */
mi rendo conto che non puoi implementare niente solo con queste righe, ma 
magari riesci a fare una ricerca piu' accurata
ciao
fabio

 linux,
Allora il NG giusto č it.comp.os.linux.development.
In ogni caso:
 man opendir
 man readdir
Max

 e poi dovrei cross compilare bash 
Esistono altre shell oltre la bash. 
E sono anche piu` leggere.

 aprirli e leggere cosa c'è scritto??
Ma stai scherzando?
man open
man close
man fopen
man fclose
man scanf
man getline
Newsgroup: it.comp.lang.c
Titolo: Help: problema con compilatori.

Ciao a tutti, ho un problema con i compilatori C/C++: dopo aver creato il
mio bel programmino, lo salvo, lo compilo, non c'č nessun errore, nessun
warning, quindi lo mando in esecuzione. Non appena il programma termina, si
chiude automaticamente la finestra, quindi per vedere il risultato sono
costretto a mandare in esecuzione il programma direttamente dalla sua icona
(filename.exe). (Ad esempio un programma del tipo printf("Salve, mondo"); si
chiude non appena viene aperto!).
Questo succede con tutti i compilatori che ho provato (Borland Turbo C++
3.0, Borland C++ 5.0, Microsoft Quick C) ma solo sul mio PC (Pentium II-64K
RAM); credendo fosse un problema software (conflitti.) ho installato come
primo programma un compilatore (subito dopo Windows) ma il problema
persiste, cosě ho anche provato ad installare un'altra versione di Windows
98, niente! Non ho mai avuto nessun problema con altri software.
Da cosa dipende? Se qualcuno sa darmi una risposta gli sono veramente grato.
Ciao a tutti.

Da cosa dipende? Se qualcuno sa darmi una risposta gli sono veramente grato.
Aggiungi un getchar(); alla fine del tuo codice principale ;)
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
---------------------------------------------

 Ciao a tutti.
se i programmi che generi sono 'programmi per DOS' puoi provare a
mandarli in esecuzione in una finestra DOS precedentemente aperta con
'Prompt di MS-DOS' dal menu avvio 
oppure resetti nelle proprieta' del programma la voce 'chiudi
all'uscita'

 chiude automaticamente la finestra,
Metti
getchar();
appena prima della fine del programma.
EMG

Ciao a tutti.
Accidenti, hai fatto tutto questo solo per un problemino cosi' banale?
Ti mancava soltanto di sostituire il computer,o magari di distruggerlo
a colpi di cannone. :-)))
Il Ghenio
-----
Proteggeremo il mondo della devastazione!
Uniremo tutti i popoli nella nostra nazione!
Denunceremo i mali della verità e dell'amore,
Estenderemo il nostro potere fino alle stelle.
Jesse!
James!
Team Rocket pronto a partire alla velocità della luce.
Arrendetevi subito oppure preparatevi a combattere.
Miaaaoooo, proprio cosi'!
(Team Rocket)
-----
Newsgroup: it.comp.lang.c
Titolo: sleep precisa precisa

CIao Raga, mi chiedevo se qualcuno si era imbattuto sulla necessita di
fermare un processo (o operazioni varie) per x ms.
Normalmente si fa con una sleep (a analogo) se non fosse che non e'
precisissima e parlando di ms uno scarto di 20 e' non poco (mi serve per
leggere da un buffer per questioni audio).
MI sono letto un po' di documentazione in giro ma non ho trovato un codice
efficace per gestire sta cosa, qualcuno ha qualche idea?
(codice x win).
Grazie a chi mi vorra' rispondere
Mauro

 wrote in message
news:Pine.LNX.4.21.020610...@annina.cs.unibo.it...

Giustamente dici Windows (per il quale e' OT).
Cmq. sotto windows non si usa sleep, ma si programmano i Timer che generano
un interrupt relativamente preciso (1ms, SetTimer() ).
Cerca un po in MSDN con le parole chiavi: DirectSound, streaming, audio
double buffering, multimedia, MCI (media controlo interface). Trovi un sacco
di esempi per il trattamento audio/wave.



Come sicuramente saprai il limite del 1/18 secondo (quindi 55ms ...
non 20 !) e' dovuto alla frequenza del timer che appunto lavora
normalmente a questa frequenza. Detto questo se ti serve maggiore
risoluzione e' sufficiente riprogrammare il timer avendo cura di
richiamare l'interrupt originario ogni 1/18 di secondo...
ciao
Andrea

Non è anche importante sapere la priorità del processo? Avevo letto da
qualche parte che per ottenere risultati migliori in questo senso bisognava
settare la priorità a runtime invece della normal. Sono panzane?
Dome

 di esempi per il trattamento audio/wave.
Volevo evitare di usare Directsound per poter fare andare il programma
anche senza di esse (per poter usare l'algoritmo di trasmissine e
sincronizzazione anche in macchine che non hanno directosound istallato a
scopi di hard test).
Mauro

 wrote in message
news:_%3N8.31183$86.7...@twister1.libero.it...

No, e' giusto. Per questo tipo di applicazione bisogna scrivere driver con
priorita' realtime. Assolutamente non triviale il tema. Per questo motivo e'
meglio usare DirectSound, Asio
(
www.steinberg.net/developers/ASIO2SDKAbout.phtml
) o le possibilita' di
Streaming del Windows.

 scopi di hard test).
Avevo anche indicato altre soluzioni in quella lista che non si basano su
DirectSound: MCI, Streaming audio (sempre MSDN, sempre tanti esempi
pratici).
Newsgroup: it.comp.lang.c
Titolo: Problemi assembler e funzione put pixel

Salve
Scusatemi ancora.
Qualcuno mi puo dire perchè la seguente funzione non vuole assolutamente
stamparmi il pixel sullo schermo?
void Put_Pixel (int x,int y,char color,VIRTUAL screen)
{
 asm
 {
  mov bx, y                       /* VIRTUAL = unsigned char * */
  mov di, screen             /*nel caso scrivo direttamente a video è
  mov dx, bx                        uguale a 0x0a0000 */
  shl bx, 8
  shl dx, 6
  add di, bx
  add di, dx
  add di, x
  mov es:[di], color
 }
}
Grazie
Saluti
Mirko

 
Comunque non e' necessario scomodare l'assembler. Basta usare i puntatori
far del C.

 Basta usare i puntatori far del C.
Come sopra. I puntatori far non fanno parte del C standard.
EMG
PS. Sono solo un paio di precisazioni.

 
PS. Giustissime

uguale a 0x0a0000 */
Il compilatore che usi è della Borland x Dos, vero? Se è così stai
producendo codice a 16 bit per la modalità reale e non puoi utilizzare il
formato degli indirizzi lineare (modalità protetta a 32 bit). L'indirizzo
fisico della memoria video è si 0x000A0000, ma in modalità reale devi
utilizzare il formato Segmento:Offset. Quindi il puntatore diventa
A000:0000, valore che puoi caricare in DS:[BX] oppure in ES:[DI] (ma
esistono anche altre combinazioni di registri utilizzabili).
Dato che per memorizzare l'indirizzo utilizzi una variabile passata come
parametro ti conviene far uso delle istruzioni 'les' o similari. Per il
resto la funzione è ottimizzata a dovere.
Ciao, Giuseppe
---------------------------------------------------------------------------
_Guybrush su IRCNet canale #programmazione
---------------------------------------------------------------------------

Vi rigrazio tutti perchč mi state aiutando un sacco.
Ho provato anche a dividere l'indirizzo in segmento e offset, mal il
problema rimane a video non compare nulla. Perchč !!!
void Put_Pixel (int x,int y,char color)
{
 asm
  mov bx, y
  mov es 0a000h
  xor di,di
  mov dx, bx
  shl bx, 8
  shl dx, 6
  add di, bx
  add di, dx
  add di, x
  mov es:[di], color
 }
Grazie ancora
Mirko

  mov es 0a000h
Questa istruzione non dovrebbe neanche compilartela perchč non si puņ
assegnare un valore direttamente ai registri di segmento. Cambiala con:
mov ax, 0A000h
mov es, ax
Assicurati anche di essere in modalitą video 13h

Newsgroup: it.comp.lang.c
Titolo: Inclusione di librerie

Ciao a tutti!
Il mio problema è questo: ho un programma in C molto grande e adesso sto
facendo fatica a gestirlo nel senso che ogni volta che inserisco nel
progetto un nuovo modulo, se voglio utilizzare variabili definite in
altri moduli inserisco in testa il relativo #include <nome del file.h>
Adesso, però, quando compilo mi dà un errore del tipo:
struct type redfinition
Se ometto invece il relativo include mi dice che non riconosce il tipo
di variabile utilizzato.
Secondo voi come posso fare per risolvere il problema?
Posso inoltre specificare delle direttive al preprocessore in maniera
tale che se una libreria risulta già inclusa non la includa nuovamente
(perchè penso che il problema effettivo sia proprio questo!)?
Ciao e grazie
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG


Le direttive che ti consentono di non includere una libreria se questa 
già risulta inclusa sono le seguenti
#ifndef NOME_HEADER_H
#define NOME_HEADER_H
Contenuto dell'header
#endif
Nota però che, nel caso delle librerie standard, questo meccanismo è gia 
implementato.

 
Non era + semplice definire per esempio la truttura pippo dentro pippo.c
e nell'header mettere extern struct pippo ? ed includere quello ?


e nell'header mettere extern struct pippo ? ed includere quello ?
No.
Newsgroup: it.comp.lang.c
Titolo: Borland Builder 3.0 e C "puro"

Sono uno studente e volevo programmare C "puro"(prompt di DOS) con un IDE
comodo come quello di questo programma(che ho trovato su una rivista).
Purtoppo non riesco a farlo...è possibile? Ci sono settaggi speciali? Sto
scaricando anche il FreeCompiler 5.5 e il corrispondente TurboDebugger...mi
conviene? E' compreso un IDE x Windows? Grazie

 conviene? E' compreso un IDE x Windows? Grazie
Dall'IDE del builder puoi creare applicazioni Console selezionando:
File | New | Console Wizard
e marcando i check box Console ed EXE
Unico neo genera files  *.CPP e manca l'opzione per generare file *.C
Per lavoare in C sono piů pratici i tools a linea di comando.
CppBuilder contiene anche un compilatore a linea di comando (bcc32.exe).
usabile con la stessa procedura del 5.5
Il free-compiler 5.5 non ha IDE , lavora solo a linea di comando e
funziona perfettamente.
Per usarlo basta creare nella directory BIN due files di
configurazione (normali file testo creabili con Notepad):
1 - BCC32.CFG
-I<lettera del tuo drive>:\BCC55\INCLUDE
-L<lettera del tuo drive>:\BCC55\LIB
2 - ILINK.CFG
-L<lettera del tuo drive>:\BCC55\LIB
oltre ad aggiornare la variabile di sistema PATH modificando il file
AUTOEXEC.BAT oppure creando ul file batch da lanciare dopo aver aperto
la finestra dos. Il mio, con il compilatore installato sul drive D
contiene le seguenti righe:
@echo OFF
REM posizionati nella directory di lavoro
D:
cd \
cd bcc55\prg
REM Aggiorna PATH
SET PATH=D:\BCC55\BIN;%PATH%
Per le principali opzioni di compilazione digita dalla linea di comando
bcc32
Se comunque voui un'Ide per il C sul sito Borland/Inprise puoi scaricare
il vecchio Turbo C 2.x (free).
Spero ti sia utile
gfb

Unico neo genera files  *.CPP e manca l'opzione per generare file *.C
Scusa ma se dai al sorgente l'estensione .C non dovrebbe essere
compilato come un file "C" ?
ciao

 e marcando i check box Console ed EXE


 ciao
Il wizard del builder genera _automaticamente_ il file progetto (*.bpr)
e
lo scheletro del sorgente come *.CPP
Il problema non è solo il cambio dell'estensione, ma l'aggiornamento di
utte le opzioni del makefile.
L'operazione è piuttosto macchinosa, tanto che preferisco scrivere il
programma C col mio editor e usare i tools a linea di comando.
ciao.

 > Unico neo genera files  *.CPP e manca l'opzione per generare file *.C
#pragma hdrstop separa gli header precompilati (quelli che fanno parte
della distribuzione es <vcl.h>) dai tuoi'.
# pragma argused serve a bloccare i warnings quando non vengono usati i
valori di argc, argv.
Tutte queste spiegazioni le puoi trovare in dettaglio nell'help in linea
con Help | Index | parola da ricercare.
<condefs.h> è un file standard per i programmi _console_ in C++. Lo
trovi
nella directory \Program Files\BCB3\include (cambia il path secondo la
tua
installazione).
Ciao.
Newsgroup: it.comp.lang.c
Titolo: helpmi

come uso telnet con c7c++

 
se non ti puoi degnare di scrivere un messaggio correttamente, perché
dovremmo degnarci di darti una risposta utile? "c7c++"? E cosí difficile
controllare?
Questo a parte il fatto che potresti anche descrivere un pó meglio il
tuo problema, al fatto che potresti anche googlare per "telnet c++" o
qualcosa del genere...
Ciao ciao
Adriano

 come uso telnet con c7c++
- apri una socket sulla porta 23 dell'host remoto;
- ti studi il protocollo di telnet [1];
- appena lo hai imparato, continui la scrittura del tuo programma.
C:\>iao Angelo
P.S. L'algoritmo funziona con qualsiasi versione di compilatore.
[1] 
http://www.omnifarious.org/~hopper/technical/telnet-rfc.html
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Newsgroup: it.comp.lang.c
Titolo: Chiamare una Servlet da codice C

Ciao a tutti.
Volevo sapere come sia possibile chiamare una Servlet Java da un programma
cgi scritto in C.
Grazie per ogni suggerimento,
Cris

"Cris" <cgra...@NOSPAMlibero.it> wrote in message
news:9hqk8.21606$1S3.6...@twister1.libero.it...

Se il servlet implementa l'interfaccia HttpServlet puo essere chiamato
avendo il codice C che effettua una HTTP GET o POST al servlet in oggetto.
Bob Rock

 ha scritto nel
messaggio news:a71ulq$i1ldp$2...@ID-98646.news.dfncis.de...

Grazie. Scusa l'ignoranza, ma mi potresti dire, per favore, come posso fare
una HTTP POST alla Servlet da codice C?
Bye,
Cris

 Cris
Un'approccio, il piu lungo e faticoso, è quello che ti vede partire dai
socket per implementare l'HTTP (o la parte di esso che ti serve). In realta
ad oggi non esiste piattaforma per la quale non sia già disponibile piu di
una libreria che implementi questo popolare protocollo. Ad esempio, su
piattaforme Microsoft esiste la libreria wininet che implementa una serie di
protocolli Internet tra i quali anche l'HTTP.
Bob Rock

Newsgroup: it.comp.lang.c
Titolo: [newbie] strighe e puntatori

ancora non ho molto chiari i puntatori e come usare a fondo le stringhe
(array di char)
mi potete fare un esempio di una funzione che riceve come parametro un'array
di char e che ritorna un'altra array di char?
--
ciao
xAERO


Old musicians never die, they just decompose.

 xAERO
-- 
Ciao, gengisdave
http://digilander.iol.it/gengisdave

di char e che ritorna un'altra array di char?
Non e' possibile restituire un array di char se non racchiudendolo in
una struttura o simulandone il ritorno con un puntatore a carattere.
es.:
char *funzione( char a[20] ) 
{
     ...
}
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
-----------------------------------------------
Dovro' prendere lezioni di Internet, 
se non sai di Internet non ti considera nessuno 
(Carmen di Pietro) 
-----------------------------------------------
Newsgroup: it.comp.lang.c
Titolo: Function should return a value... oppure no?

Ciao a tutti.
Ho scritto una funzione che, a seconda del parametro che riceve, conta 
il numero degli elementi di una lista che soddisfano una certa 
condizione (età maggiore di 18 anni, oppure peso maggiore di 60 chili).
Nonostante a me sembri di aver fatto in modo che la funzione restituisca 
in ogni caso un valore, e nonostante questa giri correttamente, il 
compilatore mi segnala un warning del tipo "function should return a 
value". 
Potreste spiegarmi perchè? Forse non si accorge dei return inseriti 
nello switch? 
Ecco il codice:
***
int Conta(elemento *head, campo c, int soglia) {
//Restituisce il numero degli elementi della lista il cui valore, nel 
campo c, è maggiore di soglia. Realizzata ricorsivamente.
 if (head == NULL)
  return 0;
 else
  switch (c) {
   case eta:
    if (head->value.eta > soglia)
     return 1 + Conta(head->next, c, soglia);
    else //Richiamo la funzione su head->next senza aggiungere 1.
     return Conta(head->next, c, soglia);
   case peso:
    if (head->value.peso > soglia)
     return 1 + Conta(head->next, c, soglia);
    else //Richiamo la funzione su head->next senza aggiungere 1.
     return Conta(head -> next, c, soglia);
  }
}
Grazie a tutti e ciao.
Bizio.

Fabrizio Marini ha scritto:

Il compilatore non puo' assumere che si finisca sicuramente in almeno 
uno dei branch che hanno un return perchè questo dipende dal contenuto 
delle variabili che vengono influenzate dalla logica di runtime.
In sintesi devi fare in modo che ci sia un return raggiungibile sempre 
senza condizionamenti di runtime per soddisfare il compilatore.
Senza alterare eccessivamente il tuo sorgente potresti sostituire l'if 
principale con:
if (head != NULL)
{
    switch (c) {
     case eta:
      if (head->value.eta > soglia)
       return 1 + Conta(head->next, c, soglia);
      else //Richiamo la funzione su head->next senza aggiungere 1.
       return Conta(head->next, c, soglia);
     case peso:
      if (head->value.peso > soglia)
       return 1 + Conta(head->next, c, soglia);
      else //Richiamo la funzione su head->next senza aggiungere 1.
       return Conta(head -> next, c, soglia);
    }
}
return 0;
Non è sicuramente il massimo dell'eleganza e lo stesso codice puo' 
essere scritto meglio ma risolve il tuo problema velocemente.
ciao
fg

 }
Il problema e' che c'e' un percorso per cui si arriva alla fine della 
funzione senza incontrare un return: head!=NULL && c!=eta && c!=peso
Se anche il tipo "campo" e' definito come enum {eta, peso} 
apparentemente il compilatore non si accorge che nello switch sono 
compresi gia' tutti i casi. Che compilatore stai usando?
Comunque per togliere il warning puoi mettere una clausola default:
switch (c) {
   case eta:
   ...
   case peso:
   ...
   default:
     // non dovrebbe mai arrivare qui.
     return -1;
}
ciao
Giacomo

 compresi gia' tutti i casi. Che compilatore stai usando?
Borland C++ Builder 6.0. 
Ne approfitto per ringraziare tutti per le risposte illuminanti.
Bizio.
Newsgroup: it.comp.lang.c
Titolo: C++ Come cambiare colore a stringa in OUTput

Salve, sono un neofita del C/C++, vorei sapere una cosa io utilizzo come
compilatore C++ il famoso devC++. Mi stavo approcciando consultando anche
qua e la su internet su come semplicemente cambiare il colore del testo in
uoutput tipo come riporto ui sotto per la stringa "Ciao Mondo".
Ma lanciando la compilazione mi da un errore di funzione TEXTCOLOR NON
DICHIARATA ( nonostante abbia fatto la chiamata alla direttiva #include
<conio.h>)
mi dite dove devo aggiustare?
grazie
-----------------------------------------
#include <cstdlib>
#include <iostream>
#include <conio.h> //Cambia colore testo in output
using namespace std;
int main()
{
Textcolor(4); //Testo in rosso
cout<<("Ciao Mondo");
getchar();
return 0;
}
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Textcolor(4); //Testo in rosso
Non mi risulta che questa funzione sia parte del C++, ne delle API di
Windows.
Al suo posto usa:
HANDLE HCmd;
CONSOLE_SCREEN_BUFFER_INFO csbiInfo;
HCmd = GetStdHandle (STD_OUTPUT_HANDLE);
GetConsoleScreenBufferInfo (HCmd,&csbiInfo);
SetConsoleTextAttribute (HCmd,FOREGROUND_RED | FOREGROUND_INTENSITY);