mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c
Titolo: copiare file con le stringhe

Salve ho scritto questo semplice prg
che copia i file con le stringhe.
Il prg funziona ma se il
file in ingresso e' 
diamanti
quello in uscita e'
diamanti
y
In pratica sotto  diamanti compare
una y con 2 puntini sopra ,alla tedesca
Il numero dei caratteri in ingresso e' minore
di quelli in uscita!.
E' colpa del carattere terminatore?
Riporto qui il breve prg
#include <stdio.h>
#include <stdlib.h>
#define MAX 300
void main(int argc,char *argv[])
{
FILE *fp1,*fp2;
int t;
char str[MAX];
fp1=fopen(argv[1],"rb");
fp2=fopen(argv[2],"wb");
t=0;
do{
str[t]=getc(fp1);
putc(str[t],fp2);
t++;
while(!feof(fp1));
}
--
Posted from 
ro...@obelix.val.it
 [194.244.89.2]
via Mailgate.ORG Server - 
http://www.mailgate.org

}
il do..while e' sbagliato.
Se vuoi copiare un file sull'altro fai cosi' :
while ( fgets( str, sizeof str, fp1 ) )
{
      fputs( str, fp2 ) ;
}

 Riporto qui il breve prg
#include <stdio.h>
int main(int argc, char *argv[])
{
        FILE *fp1, *fp2;
        int t;
        fp1 = fopen(argv[1], "rb");
        fp2 = fopen(argv[2], "wb");
        if (fp1 == NULL || fp2 == NULL) exit(1);
        for (;;) {
                t = getc(fp1);
                if (feof(fp1)) break;
                putc(t, fp2);
        }
        fclose(fp1); fclose(fp2);
        return 0;
}
Nota che generalmente, invece di usare feof(), si utilizza il valore
restituito dalle funzioni di lettura, ad es.
	while ((t = getc(fp1)) != EOF)
		putc(t, fp2);
Ciao ciao,
Andrea
-- 
"...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and 
 the Ugly)."
(by Matt Welsh)

t++;
Affinche' il programma funzioni senza andare in crash devi togliere la
riga t++;
Se poi cambi il controllo sull'EOF, e usi un carattere invece di un
array allora il programma e' a posto.
Potresti poi migliorare il programma (se non sbaglio stai facendo
esercizio) cosi' :
- primo miglioramento
  invece di leggere un carattere alla volta, leggere piu' caratteri
(es 128 o 256) velocizzando cosi' l'elaborazione. Devi considerare che
la lunghezza del file di input non e' un multiplo del blocco di
caratteri letti ogni volta e quindi l'ultima operazione di lettura
conterra' meno caratteri.
- secondo miglioramento
  leggere piu' caratteri allocando pero' dinamicamente la memoria. in
questo modo puoi leggere dei blocchi anche da 16KB e diventa ancora
piu' veloce.
Se hai bisogno la mia e-mail e' scritta sopra.
ciao
Newsgroup: it.comp.lang.c
Titolo: cicli in parallelo

Salve a tutti,
stavo sviluppando un piccolo gioco in 2D,
ma sono arrivato ad un punto in cui ho un dubbio.
devo fare un ciclo while per il Render non dipendente da un timer
(ovvero che fa piu frame possibili), e un secondo ciclo per la fisica e
i movimenti dei personaggi indipendende dalla velocità dei frame ma
non ho idea di come farlo.
devo farlo perforza tramite il multithreading ???
c'è un modo alternativo ??
anche mischiando i due cilc???
grazie in anticipo,
ciuu,
Ivan

Errata : anche mischiando i due cicli???

 devo farlo perforza tramite il multithreading ???
Non "per forza", fino a poco tempo fa tutti i giochi erano single
threaded. Semplificando al massimo nel main loop metti l'aggiornamento
della fisica e dei personaggi seguito dal rendering.
Il passaggio ad un design multithreaded ti permetterebbe di sfruttare le
cpu dualcore (o al limite HT) sempre più diffuse, ma renderebbe
l'interazione tra i 2 (o 3) componenti molto più complessa.
xpost e f/up su un gruppo più adatatto.
Luca
-- 
Home: 
http://kronoz.cjb.net
Software is like sex; it's better when it's free.
Linus Torvalds
Newsgroup: it.comp.lang.c
Titolo: Concatenazione stringhe: che incubo...

Ciao a tutti,
ho spesso problemi (nel senso che ho saltuariamente risultati inattesi) nella concatenazione delle stringhe in C.
Temo di adottare delle istruzioni "pericolose".
Faccio un esempio. 
Ho trovato ed adattato questo codice che sostituisce in str la sottostringa oldStr alla sottostringa newStr:
void strReplace(char * str, char* oldStr,char * newStr) {
char * ptre;
if ((ptre = strstr(str, oldStr)) != NULL) {  
	*(ptre) = '\0';		// str = ptre solo parte sx della linea
	ptre += strlen(oldStr);	// ptre = ptre parte dx della linea dopo la var[i] 
//	printf("prima %s - %s - %s - %d<br>\n",str,newStr,ptre,strlen(oldStr));
//alternativA:	sprintf(str,"%s%s%s\0",str,newStr,ptre);
	strcat(str,newStr);
	strcat(str,ptre);
//	printf("dopo %s<br>\n",str);
}
E` giusto fare cosi' ?	
Devo fare qualcosa di tremendo perche` ogni tanto sull' istruzione: 
*(ptre) = '\0'; abortisce il processo.
Inoltre come mai la sprintf(str,"%s%s%s\0",str,newStr,ptre);
aggiunge sempre un valore inatteso per la variabile ptre (NON FUNZIONA !) ?
Grazie dell' aiuto.
Irene
--
Posted from 
igate.elsag.it
 [194.243.48.130]
via Mailgate.ORG Server - 
http://www.mailgate.org

E` giusto fare cosi' ?	
No :)
In pratica succede questo :
Se str = "topolino"
   oldStr = "olino"
   newStr = "astro"
Si ha che
 
   str  = "topolino"
   ptre ======^
   str  = "top\0lino" (in seguito al *(ptre) = '\0')
   ptre ======^ 
   str  = "topastro" (in seguito al primo strcat())
   ptre ======^
Come vedi, ptre punta ad una parte di str che ormai e' stata
sovrascritta.
Il codice corretto e' il seguente :
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void strReplace(char * str, char* oldStr, char * newStr)
{
   char * ptre, * temp ;
   if ((ptre = strstr(str, oldStr)) != NULL)
   {
	*(ptre) = '\0';
	temp = malloc ( strlen ( str ) ) ; 
        /* alloca un buffer temporaneo */
        /* la lunghezza di temp e' esagerata ma non e' rilevante */
	ptre += strlen(oldStr);
        strcpy ( temp, ptre ) ;
        /* viene salvata in temp la coda */
	strcat(str, newStr) ;
        /* sostituisce la sotto-stringa */
	strcat(str, temp) ;
        /* riattacca la coda */
        free ( temp ) ;
        /* libera la memoria per il buffer temporaneo */
   }
}
int main()
{
    char st [50] = "andrea rossi" ;
    printf ( "prima : %s\n", st ) ;
    strReplace ( st, "drea ros", "tonio galas" ) ;
    printf ( "dopo  : %s\n", st ) ;
    return 0 ;
}

Newsgroup: it.comp.lang.c
Titolo: Problema #include <mysql.h>

Ciao a tutti,
sono un neofita vorrei compilare il mio primo programmino in C che 
consulta un database mysql, ma GCC mi comunica che non trova l'include 
mysql.h. Come devo fare per aggiungere queste librerie ed i  rispettivi 
files header al sistema operativo? Ho già provveduto ad installare 
libmysql++-dev, ma non trovo guide in merito googlando! Forse sbaglio le 
parole chiavi.
Vi prego un aiuto grazie mille a tutti.


Ho trovato:
mysql_config restituisce dove si trovano le cose...
Newsgroup: it.comp.lang.c
Titolo: [Borland C++ 5.5] Scusate l'ignoranza, ma non riesco a comprendere

      -L"c:\Borland\Bcc55\lib"
Stesse incomprensioni (da parte mia) del punto b.
Come si crea 'sto benedetto file .cfg e in quale directory posizionarlo.
Mi scuso ancora per questi problemi che sicuramente troverete stupidi, ma
proprio non riesco a venirne fuori, e finche' non risolvo sono
letteralmente bloccato. Sono andato a verificare sul sito della Borland se
esisteva qualche documentazione-faq piu' esplicativa su queste
problematiche, ma non ho trovato niente; evidentemente sono problematiche
solo per il sottoscritto, ngheeeee  :(
Spero che gentilmente qualcuno possa "illuminarmi".
Ciao e grazie
Carlino
--
Posted from 
ro...@handi4-145-253-158-009.arcor-ip.net
 [145.253.158.9] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Come si crea 'sto benedetto file .cfg e in quale directory posizionarlo.
Come sopra.
Comunque sei off topic. Devi rivolgerti ai newsgroup della Borland.
EMG

Newsgroup: it.comp.lang.c
Titolo: 1: HELP TESISTA: come fare rapidamente una DLL

Ciao ng. Come da oggetto sono un tesista e ho dei problemini.... spero che
qualcuno di voi possa aiutarmi. Farò 3 thread, in modo da nn appesantire,
che sono fra loro collegati.
Comincio con chiedere cosa ci serve per fare correttamente una dll (io ho
visual C++ 5): ne ho fatte un paio, ma erano per java, e quindi il file h
l'ho generato con tool di JDK.
Supponiamo che io voglia fare una DLL x un mio prg in c o c++, con N
funzioni diverse che voglio far utlizzare al programma.
Come va fatto il file h? che ci devo mettere? e nel file della DLL, oltre al
codice delle funzioni che ci metto? e per ultimo, il mio prg, cosa dovrà
avere al suo interno x usare DLL? ho visto qualcosa sull'help tipo dllexport
o dllimport, ma nn mi è molto chiaro.
Grazie di cuore a chi risponderà.
Piero.

 wrote in message
news:9kclsv$kiv$3...@nreadA.inwind.it...


Newsgroup: it.comp.lang.c
Titolo: Automatizzare salvataggio testo pagine internet

Non so come è possibile automatizzare tale passaggi, se serve
un linguaggio particolare, o se ci sono
gia software che lo fanno o se basta una macro di word.
Da una pagina internet
Pulsante destro mouse, si apre finestra a discesa e seleziono tutto
Poi sempre pulsante destro mouse scelgo comando copia
Poi su una pagina di word già aperta incollo
Poi salvo la pagina con nome pag1
ripetere poi l’operazione su un’altra pagina internet in modo
però che quando salva assegni in automatico pag2
In sostanza io devo solo aprire la pagina di internet
e devo avere una macro che fa tutto il resto, però incrementando
il nome di salvataggio.
con una macro da word word si può fare?

Qui sei OT.
Prova su it.comp.programmare.win32
Dome
--
------------------------------------------
Domenico Troiano
AI & 3D Coder TFS Project
www.panther3d.com
red...@panther3d.ath.cx
------------------------------------------
Newsgroup: it.comp.lang.c
Titolo: aiuto socket

Ciao, sono interessato alla programmazione dei socket in c e mi
chiedevo se qualcuno mi potesse aiutare.
Il mio problema è questo:
ho 2 listati(client e server) uno prende gli input, l'altro fa le
computazioni.
La domanda è questa anche se sembra banale:
come faccio a far sì che client invii messaggi al server tramite
socket e che questo li prenda come input?
Grazie Leo
leowap AT 
inwind.it

Leo wrote:

Premessa: non esiste un modo standard per le comunicazioni di rete, dipende
dal sistema operativo.
Visto che parli di socket, immagino che tu abbia a disposizione anche le
funzioni send(to) e recv(from)... quelle di certo funzionano.
Guarda la guida di Beej sulla programmazione di rete (si trova facilmente
con google).
Sotto Unix un socket lo puoi usare come un file (con le dovute limitazioni
vista la sua natura) e puoi usare direttamente le funzioni di write/read
come su ogni altro file descriptor.
-- 
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."

Io ho fatto un mese fa un po di codice con i socket...la parte server
xke il client si collegava con telnet...xň penso che cmq devi sempre
usare send e recv...bloccanti o no...dipende da te...oppure anche con
code di messaggi...sono semplici da utilizzare...se lo trovo dopo ti
dico anche un bel link sulla programmazione socket che avevo trovato...
Andrea
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

http://linux.ing.uniroma1.it/ita/proj/introC/html/node98.html
Qui c'è qlc in generale...a me un po è servito...


 socket e che questo li prenda come input?
http://digilander.libero.it/foobar
nella sezione documentazione trovi un documento che per iniziare va bene.

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

aiutoooooooo ho bisogno di inserire delle immagini in un eseguibile fatto in 
c.
come posso fare? 

 in c.
Inserirle? In che senso!?
--
Cingar
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it


Chiedendo sul newsgroup giusto, ovvero quello relativo alla piattaforma 
su cui lavori (it.comp.os.linux.development, oppure 
it.comp.programmare.win32, ad es). Nello standard C non si parla di 
immagini, ne' tanto meno di 'inserire delle immagini in un eseguibile' 
(qualunque cosa tu poi intenda con questo).
-- 
Mat/tia Belletti             - Graduate student @ 
cs.unibo.it
ICQ: 33292311                - email: 
mbel...@cs.unibo.it
IRC: RedGlow                 - site(s): 
http://mbellett.web.cs.unibo.it/
Red...@jabber.linux.it/Gaim
 - Linux user 299762 @ machine 213003
Newsgroup: it.comp.lang.c
Titolo: Passaggio di un array multidimensionale a sub routine

Salve a tutti!
Sono un niubbio del C.
Avrei bisogno di sapere se e come si può passare un array multidimensionale
da main a sub-routine e viceversa,per indirizzo.
Se possibile,gradirei qualche esempio pratico.
La struttura che tento di far "viaggiare" è la seguente :
char    testo [RIGHE][COLONNE]
dove RIGHE e COLONNE sono 2 costanti.
Grazie anticipatamente per la disponibilità,
e saluti a tutta la comunità!

--> subroutine(char **array_bidimensionale);
o anche
--> subroutine(char *arraybidimensionale[]);
dovrebbe funzionare anche
--> subroutine(char array_bidimensionale[][DIM]);
--------------------------------
Inviato via 
http://usenet.libero.it

 --> subroutine(char array_bidimensionale[][DIM]);
Questa funziona.
Ci sono varie alternative che trovi sulle FAQ 
(
http://www.eskimo.com/~scs/C-faq/top.html
). Il modo piu' semplice (a mio 
avviso) e' allocare dinamicamente l'array e poi usare la sintassi 
subroutine(char ** matrice, int n, int m);
-- 
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."

 dove RIGHE e COLONNE sono 2 costanti.
int Foo(char testo[RIGHE][COLONNE]);
da chiamarsi con
Foo(testo);
EMG
--
EMAG Software Homepage:     
http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: 
http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: 
http://www.emagsoftware.it/tbosg

 ha scritto nel
messaggio news:3E80D3CF...@emagsoftware.it...

Grazie per il suggerimento.
Avrei bisogno di sapere un'ultima cosa.
Come devo dichiarare il prototipo di funzione in testa al programma?
Grazie e saluti

 > int Foo(char testo[RIGHE][COLONNE]);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Ti suggerisce niente?
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Come devo dichiarare il prototipo di funzione in testa al programma?
Come ti ho scritto sopra:
int Foo(char testo[RIGHE][COLONNE]);
EMG


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

 Dev C++
Che usa un port di gcc(vedi risposta sopra) per win32 (non
so se cygwin o mingw32)

 ha
scritto nel messaggio
news:a0dblg$5gq$1...@pegasus.tiscalinet.it...

Scusate, ma si tratta di una risposta a un vecchio thread
che ho potuto inviare ora, insieme con altre. Si trattava
della scelta di un buon compilatore free per Win32.
--
Paolo Giarrusso

della scelta di un buon compilatore free per Win32.
Figurati :)
 
Mox
Newsgroup: it.comp.lang.c
Titolo: protocollo

Come si fa ad implementare un protocollo in C?
Grazie

 
Devi definire meglio il problema: protocollo di che tipo? Ti riferisci 
forse a un p. di comunicazione? Se si tra cosa? Tra periferiche? Tra 
computer? Tra programmi?
In ogni caso credo che l'implementazione sia tra gli ultimi dei tuoi 
problemi (non come importanza, ma come ordine).
-- 
Devaraja (Xdevaraja87^gmail^c0mX)
Linux Registerd User #338167
http://counter.li.org

Un protocollo di rete per la comunicazione tra computer

> Un protocollo di rete per la comunicazione tra computer
Un protocollo di comunicazione non viene definito per uno specifico
linguaggio.
Sono regole che l'implementatore definisce, nulla piu.
Ad esempio, cerca la rfc1939 (tratta il protocollo POP3)
in questo indirizzo trovi la lista degli rfc
http://www.ietf.org/rfc
Bye,
Raktzo

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

Chi di voi sa suggerirmi una struttura dati per clacolare il grado di
annidamento di un quadrato (numero di quadrati ricorsivamente contenuti in
esso).
Es:
se un quadrato contiene un altro quadrato che a sua volta ne contiene un
altro....il grado di annidamento del primo è pari a due....capito?
GRAZIE per l'attenzione
--
Zio Patata®
ICQ #  25304214
"It's herd behaviour......it's evolution baby"

 GRAZIE per l'attenzione
Non ho capito benissimo, ma penso che una funzione del genere debba
funzionare:
(se intendi quadrati perfetti interi)
int GradoQuadrato(int n)
{
    int radice=(int)sqrt((double)n);
    if((radice*radice)!=n)
        return 0;
    else
        return 1+GradoQuadrato(radice);
}
Newsgroup: it.comp.lang.c
Titolo: file

ciao a tutti vorrei un piccolo aiuto.
io dovrei creare un file di testo ma con un nome che devo inserie io.
io ho creato questo codice ma purtroppo il file che mi viene creato ha
si il nome da me inserito ma purtroppo non è un file di testo.
qualcuno sa come aiutarmi?
ora scrivo il codice da me inserito
#include <stdio.h>
#include <stdlib.h>
FILE *f;
char filename[60];
int c;
int main()
{
    scanf("%s",&filename);
f = fopen(filename, "w");
if (f == NULL) printf("Errore nell'apertura del file");
else
{
printf("Inserire il Testo\n");
do
{
c = getchar();
putc(c, f);
} while (c != 32);
fclose(f);
}
system("pause");
return 0;
}
grazie a tutti ciao

 grazie a tutti ciao
la scanf è sbagliata, o scrivi  filename  o  &filename[0]
per il resto il programma funziona, a parte il carattere
di invio che viene scritto nel file, per non scriverlo
dovresti catturarlo ad ogni scanf con una funzione come questa
void flushkeybuff() {
  while (getchar() != '\n');
}
in questo modo
else {
  printf("Inserire il Testo\n");
  flushkeybuff();
  do {
    c = getchar();
    putc(c, f);
    flushkeybuff();
  } while (c != 32);
  fclose(f);
}
ciao
-- 
Siamo pronti a contraddire senza ostinazione ed a lasciare
senza adirarci che altri ci contraddica.
                                             - Cicerone -

 grazie a tutti ciao
Ciao!

 specificare la dimensione massima dell'input.
Basta usare la scanf nel modo giusto:
if(scanf("%59s", filename) != 1) 
/* o "%59[^\n]", se vuole anche un ' ' nel nome */ 
{
        fprintf(stderr, "messagio di errore\n");
        return EXIT_FAILURE; /* o exit(EXIT_FAILURE); */
}
cc

ragazzi quindi apparte gli errori che mi avete fatto notare,  quello
che il programma produce è un file di testo?

 che il programma produce è un file di testo?
no, produce una torta al cioccolato.
Ciao Jack
-- 
http://motoko.dyndns.org

 che il programma produce è un file di testo?
Un file è un file. Contiene cose.
In ogni caso la funzione fopen() porta con se, per motivi storici, un
modo di apertura ("b") che si specifica per file "binari" (sembra che
su qualche sistema ci sia differenza tra file di testo e file binari).
Quindi una fopen("filename", "wb") aprirà in scrittura un file
binario, mentre una fopen("filename", "w") aprirà in scrittura un file
di testo.

grazie a tutti io lo sapevoma un mio collega mi aveva fatto nascere un
dubbio.
vi ringrazio ciao

 su qualche sistema ci sia differenza tra file di testo e file binari).
Beh, "qualche sistema" e' un po' riduttivo: su windows ad esempio c'e'
differenza se lo stesso file lo apri come testo o come binario, cosi' 
come c'era sui vecchi mac. :)
ciao
Giacomo
Newsgroup: it.comp.lang.c
Titolo: int a; ( bin(a)==bin((unsigned) (int) a) )?=1

casualmente stavo leggendo A6. CONVERSIONI
in particolare A6.2 CONVERSIONI DI INTERI 
ove si dice
"... In una rappresentazione in complemento a due, questo significa
troncare a sinistra l'intero, se il tipo privo di segno č piů piccolo,
ed inserire degli zeri per i valori privi di segno e applicare
l'estensione del segno a quelli con segno se il tipo unsigned č piů
ampio"
non ho capito molto, comunque una conseguenza di quello che dice č che
poichč se (o č cosě per standard?) int e unsigned int hanno la tessa
dimensione in bit
int a;
unsigned b;
b=(unsigned) a;
ed a e b corrispondono a uno stesso numero binario ?
bin(a)=bin(b) ?????
tale uguaglianza vale per ogni C standard + pc?


Ni... Non e' un discorso C o PC, e' un discorso piu' generico sulla
rappresentazione dei numeri in complemento a 2.
In pratica, se il numero CON SEGNO e' maggiore di zero e minore di
0x80000000 (numero senza segno pari a 2^31) la configurazione di bit e' la
medesima.
Se pero' il numero con segno e' minore di zero (cioe' se il suo MSB e' 1) i
valori "in modulo" seguono una scala inversa, in pratica
0xFFFFFFFF e' -1 e
0x800000000 e' -(2^31)
il che ha senso dato che effettivamente -1 > -(2^31), ma bisogna ricordare
che, se il primo bit e' effettivamente il segno, i restanti 31 NON sono il
modulo...
Da cui la mancanza di un valore -0.
I numeri negativi intermedi si comportano di conseguenza, per ottenerne il
valore assoluto devi invertirli e sommare 1.
I numeri in complemento a due hanno tra i vantaggi la semplicita'di
utilizzo: in pratica i numeri negativi vengono sottratti a un valore
fittizio che e' piu' grande di un bit rispetto alla dimensione del numero e
il cui MSB e' 1: 0 sarebbe quindi in realta' considerato come 0x100000000,
poi troncato a 32 bit e che quindi da' 0.
Ovviamente da nessuna parte viene davvero memorizzato quell'1, e' solo una
convenzione.
In questo modo quando sommi 1 a -1 hai 0xFFFFFFFF + 0x00000001 =
0x100000000, che di nuovo viene troncato e da' 0. Nel caso specifico, l'1
viene probabilmente memorizzato, temporaneamente, nel flag di riporto, ma
viene comunque ignorato.
Ciaotutti,
*

Newsgroup: it.comp.lang.c
Titolo: Ottimizzare codice crosscompilato....

Salve a tutti,
    Devo ottimizzare un programma che gira su target 68000 e mi
occorrerebbe qualche consiglio :
        *    Dove lo trovo un emulatore per questo pocessore ??
        *    Come effettuare i profiling del codice ??
    Qualsiasi idea è bene accetta...
    Grazie a tutti in anticipo!!
        Andrea.
P.S.: Rispondete via mail.

     Qualsiasi idea č bene accetta...

Newsgroup: it.comp.lang.c
Titolo: stampare stringhe

Salve,
il mio problema e' semplice.
Devo stampare il contenuto di un vettore di char un elemento alla volta.
Ho provato con:
int i;
char vett[10];
for (i=0; i<10; i++)
 {
    printf ("%c", vett[i]);
  }
...ma o non stampa niente o stampa caratteri senza senso!
Come si puo' risolvere il problema??
(ovviamente il vettore era gia' stato inizializzato, non come nell'esempio).
Grazie,
Diego.



se é già inizializzato con i caratteri giusti dovrebbe stampare!
cod

   }
la printf() e' bufferizzata... non printa fino al new line...
quindi prova con:
 for (i=0; i<10; i++)
 {
    printf ("%c\n", vett[i]);
 }
oppure:
 for (i=0; i<10; i++)
 {
    printf ("%c", vett[i]);
 }
printf("\n");
bye
Newsgroup: it.comp.lang.c
Titolo: Stringhe

Salve a tutti.
Volevo sapere in che modo in C posso dichiarare variabili di tipo 
stringa o quantomeno variabili che facciano qualcosa come le stringhe.
Se dichiaro un vettore di char mi pare che io non possa concatenare 
altro testo se il vettore è di dimensione fissa già dichiarata.
Cioè la mia intenzione è quella di usare stringhe di lunghezza variabile 
a cui aggiungere caratteri in fase di run time, e il problema è quindi 
che non so subito quanti caratteri mi serviranno.
Come posso fare?
Thx in anticipo!
-- 
Nella vita una sola cosa è certa: se la storia ci ha insegnato qualcosa, 
è che si può uccidere chiunque. (Micheal Corleone)

 che non so subito quanti caratteri mi serviranno.
malloc e realloc, servono anche per questo.
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Newsgroup: it.comp.lang.c
Titolo: CGI PER ATTACH

cari amici,
avete un'idea di come fare per ALLEGARE un file ad una mail generata da
CGI chiamato da un form?
Tale attach dovrebbe essere un file che l'utente del form seleziona
sfogliando il proprio HD.
grazie
Massimo Cortinovis
esperia sns
http://esperia.mall.it
esp...@mall.it

corti...@mall.it
 wrote:
 >avete un'idea di come fare per ALLEGARE un file ad una mail generata da
 >CGI chiamato da un form?
In perl puoi usare il modulo MIME:Lite.
-- 
ciao, | [Per rispondere togli "toglimi" dal mio indirizzo.]
Marco | * The Internet is full. Go away.  -- Joel Furr *

Newsgroup: it.comp.lang.c
Titolo: fork, figli e gestione file

Salve, ho il seguente problema
Lavoro in Unix, e mi trovo a gestire dopo varie fork() diversi processi
figli a cui delego dei compiti.
Avrei bisogno che ognuno di questi figli apra il file "monitor.txt" e vi
scriva dentro la
frase "ID figlio ha iniziato" e dopo il lavoro aggiunga "ID filgio ha
finito"; dopo di che puň chiudere il file.
Io pensavo di far aprire il file ad ogni figlio con l'opzione "a+" della
fopen. Ci possono
essere problemi/conflitti sul fatto ke il file č utilizzato da diversi
processi?
E' meglio aprire il file prima della fork?
Grazie in anticipo!
Simone
 
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

Inviato via 
http://arianna.libero.it/usenet/
Apri il file dal processo padre.
Per gestire il file di output (come ogni altra risorsa) utilizza un
semaforo binario.

 figli a cui delego dei compiti.
E quindi, qui sei OT.
Se chiedi su it.comp.os.linux, ad esempio, sapranno aiutarti meglio.
-- 
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: numero ip[un pò OT]

salve,programmo sotto windows con il borland 5.02,sapete come fare 
,utilizzando magari le librerie del winsock,ad ottenere il numero ip della 
macchina?
grazie

 wrote in message
news:Xns90876BC...@195.31.190.132...

Newsgroup: it.comp.lang.c
Titolo: Espandere una #define in una #include ...

Salve a tutti,
secondo voi è possibile definire una cosa del genere ?
#define USA_HEADER #include "prova.h"
e cioè se io scrivo nel sorgente USA_HEADER, il preprocessore lo sostituisce
con #include "prova.h".
Sembrerebbe di no, poiché il carattere # viene utilizzato per gestire gli
eventuali argomenti della #define...
chiedo cortesemente conferma o smentita, e come eventualmente potrei
risolvere la questione.
Grazie per l'attenzione.
Porlock.

Porlock wrote:

Il seguente programma è illegale:
    #define USA_HEADER #include "prova.h"
    USA_HEADER
Il seguente programma è legale:
    #define USA_HEADER "prova.h"
    #include USA_HEADER
- Dario

 Porlock.
puoi usare una cosa del genere:
#ifdef USA_HEADER
# include "prova.h"
#endif
cosě se prima di questo blocco scrivi
#define USA_HEADER
il file "prova.h" č incluso
Ciao
Matic

Newsgroup: it.comp.lang.c
Titolo: DevC++ e la pausa a fine programma

Avrei bisogno di una consulenza piccola piccola.
Volendo che il programma aspetti un input prima di chiudersi ho messo un
getchar() prima della fine del main, ma nonostante questo, in certi
programmi che faccio l'attesa ha effettivamente luogo, altre volte no, e
non comprendo da cosa dipenda... qualcuno ha la soluzione?
--
Se un filosofo è un uomo cieco, in una stanza buia, che cerca un gatto
nero, che non c'è, un teologo è l'uomo che riesce a trovare quel gatto
(Bertrand Russell).
Poochie©

 non comprendo da cosa dipenda... qualcuno ha la soluzione?
anche a me ogni tanto faceva i capricci...
prova con un system("pause"); dovrebbe funzionare sempre
'notte
Luca

 non comprendo da cosa dipenda... qualcuno ha la soluzione?
Si capita anche a me! Francamente non so da cosa dipenda ma posso dirti che
io risolvo con un doppio getchar()
Non sarà molto ortodosso ma funziona!

non comprendo da cosa dipenda... qualcuno ha la soluzione?
Allora, probabilmente tu usi scanf, non e' cosi'?
E' una funzione molto infida, perche' ogni tanto nn fa quello che
vorresti, ovvero non legge tutti i caratteri che tu scrivi dalla
tastiera, ma legge quelli che gli occorrono per riemipre le variabili
che tu gli dici di riempire, e gli altri li lascia, come dire, in
attesa (si chiama buffer di lettura). 
Quando tu chiami getchar, ed il buffer di lettura e' pieno, la getchar
prende un carattere da li', e non aspetta che tu lo inserisca. Da qui
il problema.
Per svuotare il buffer di lettura, quando sai che contiene qualcosa
(quasi sempre dopo una scanf) usa la riga:
while(getchar() != '\n');
che legge il buffer fino a che non trova il return (che ogni volta che
scrivi da tastiera, e' l'ultimo char che inserisci!).
cmq, scanf, benche' comoda, genera spesso di questi errori (difficili
da scovare...), quindi, se vai su gets vai sul sicuro.
Ciao,
Zeppe
Newsgroup: it.comp.lang.c
Titolo: Creare un accordatore (tuner) in C

Salve a tutti.
Avevo in mente di creare un programma che mi permetta di riconoscere i
suoni che io premo con la mia pianola (oppure con una chitarra). Mi
spiego: attacco la pianola al Line In del mio PC e in qualche modo mi
deve stampare a video la frequenza delle note premute. Come fare? Che
librerie devo usare?
Grazie 1000 a tutti
Luca.


devi fare una analisi dello spettro.
Buona fortuna.
Recuperi l'onda sonora, la fai passare in una FFT e poi cerchi la
frequenza con maggiore energia.
In giro c'e' gia' roba che fa (quasi) quello che vuoi, cerca in giro
nella roba open source (cough cough VLC cough cough) e studiati il
codice.
Ribadisco: Buona Fortuna.
Ciao Jack

 Ciao Jack
lol, forse è un progetto un po troppo complesso per me. Comunque, dato
che ci sono, ti spiego:
volevo ricevere input da line in con la mia tastiera, riconoscere la
frequenza tramite un programmino in C e con lo stesso, spedire segnali
MIDI (in base alla frequenza).
Troppo complicato?? :D

 MIDI (in base alla frequenza).
allora oltre a quello che ti ho detto prima vuoi aggiungere anche il
MIDI.
quindi 3 cose separate:
1) acquisizione del suono tramite line-in (da salvare in prima istanza
in un file tanto per capire se lo leggi giusto.
2) dal suono ricavare la frequenza principale (ci sono anche tutte le
armoniche)
3) spedire un segnale midi (a cosa?) contenente il suono (spero solo
la nota, non anche lo strumento, perche' altrimenti il punto 2 sarebbe
molto piu' complesso di quello che e' gia').
Ma la tua pianola non ha gia' un uscita midi?
Ciao Jack


Esattamente. I segnali midi vanno poi inviati a Fl studio, non so se
lo conosci che mi suona i vari strumenti. Comunque si, vorrei creare
una tastiera midi real time.
La mia tastiera è un modello vecchio, non ho uscita midi, eheh :D


sia a livello SW che HW.
Ciao Jack
Newsgroup: it.comp.lang.c
Titolo: std::list e Visual Studio.NET

Ciao a tutti,
 ho scritto il seguente codice con il nuovo IDE di Microsoft:
         std::list<int> lst;
         int x=10;
         lst.push_back(x);
ma il compilatore mi da un errore di sintassi nel file sorgente di "list",
che si verifica solo con l'istanziazione di push_back.
Qualcuno ha gia' trovato l'errore?
Lo ha risolto?
Ho guardato sul sito MS ma non ho trovato niente.
Per la cronaca questo e' l'errore:
   C2059: syntax error : '('
e questo il codice incriminato, l'errore viene segnalato nella new dopo
_TRY_BEGIN:
	_Nodeptr _Buynode(_Nodeptr _Next, _Nodeptr _Prev, const _Ty& _Val)
		{	// allocate a node and set links
		_Nodeptr _Pnode = this->_Alnod.allocate(1, (void *)0);
		_TRY_BEGIN
	        new ((void *)_Pnode) _Node(_Next, _Prev, _Val);
		_CATCH_ALL
		this->_Alnod.deallocate(_Pnode, 1);
		_RERAISE;
		_CATCH_END
		return (_Pnode);
		}
Ciao Stefano.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Scusate, dovevo postare a it.comp.lang.c++, ma newsland se ne frega del
C++ e lo ha mandato a voi. :-)

Newsgroup: it.comp.lang.c
Titolo: Ricerca binaria

Ciao a tutti...ho un piccolo problema con un aloritmo di ricerca 
binaria. ecco l'algoritmo in C...ogni volta che lo eseguo però mi da 
errore!! non so perchè....
main()
{
  int lower, upper, x, n, found, i, y, middle;
  int a[60];
  printf("Inserisci il numero di elementi del vettore\n");
    scanf("%d", &n);
    printf("Carica il primo vettore\n");
    for(i=0;i<n;i++)
     {
      scanf("%d", &y);
      a[i]= y;
      }
  printf("inserisci il valore di x\n");
  scanf("%d", &x);
  lower = 0;
  upper = n;
  while (a[middle] = x || lower >upper)
  {
      middle = (lower+upper)/2;
      if (x> a[middle])
        lower = middle+1;
      else
        upper = middle-1;
  }
  found = (a[middle]=x);
  printf("%d", found);
  system("PAUSE");
  return 0;
}
grazie in anticipo x l'aiuto
-- 
Renato Zero
Provaci a riemergere, da quei sogni che il tuo silenzio ha ucciso...che 
ne sai, dell'origine, delle lacrime, se non ha mai pianto...provaci, a 
scommettere, che al traguardo tu non sarai secondo...agile è 
quest'anima,  non puoi vincerla, non la puoi ingannare più......PROVA A 
PRENDERMI......

  found = (a[middle]=x);
vedi sopra.
dovrebbe fungere.
main()
{
  int lower, upper, x, n, found, i, y, middle;
  int a[60];
  printf("Inserisci il numero di elementi del vettore\n");
    scanf("%d", &n);
    printf("Carica il primo vettore\n");
    for(i=0;i<n;i++)
     {
      scanf("%d", &y);
      a[i]= y;
      }
  x=1;
  while(x!=-1)
  {
    printf("inserisci il valore di x (-1 per finire) \n");
    scanf("%d", &x);
    lower = 0;
    upper = n-1;
    middle= lower;
    while ((a[middle] != x) && (lower <= upper))
    {
        middle = (lower+upper)/2;
        if (x>a[middle])
	 lower = middle+1;
        else if (x<a[middle])
	 upper = middle-1;
    }
    if (a[middle]==x) printf("\n Trovato \n\n", found);
  }
  system("PAUSE");
  return 0;
}
ciao
-- 
-------------------------------
per scrivere in privato
togliere "1975nosp"
to reply remove "1975nosp"

dimenticato, gli elementi li devi inserire ordinati :-).


 }
Luca
-- 
Home: 
http://kronoz.cjb.net
"Sei l'unica donna della mia vita".
(Adamo)

vi ringrazio tutti....ciao


Newsgroup: it.comp.lang.c
Titolo: dynamic linked library

Hey guys,
come si compila ( e poi come si richiama) una dll di windows?
Se ho un dll già compilata, basta che inserisco #include
"caciotta.dll" oppure
non funziona?
Grazie
Franco


Mooolto semplificando:
come prima cosa, puoi fare sia un link dinamico che un caricamento
dinamico (non so se su windows la terminologia sia questa).
Nel primo caso includi del tuo programma il/i file/s .h della libreria
e al linker passi il .lib relativo. A runtime la .dll che serve deve
essere nel path di sistema o nel path della applicazione.
Nel secondo caso usi la funzione LoadLibrary() per aprire la .dll e
una GetProcAddress() per ogni funzione che vuoi importare (magari più
info le trovi qui: 
http://msdn.microsoft.com/en-us/library/ms684175(VS.85).aspx
)
Magari cercando su google trovi degli esempi di entrami i casi e tutto
sarà più facile ;)
Ciao!
Newsgroup: it.comp.lang.c
Titolo: semafori in c

Ciao, devo fare x una tesina un programmino dove uso i semafori in c, ad
essere sincero mi hanno dato un foglio dove veniva spiegato come si
implementano ma era veramente poco chiaro. 
Qualcuno di voi può dirmi dove posso trovare del materiale
esplicativo sull'argomento?
Grazie, bye
Jack


I'm not prejudiced, I hate everyone equally.

In article <slrnanpnql...@barbone.bagnoli.home>, "Antonio barbone"
<bar...@bagnoli.home> 
Grazie mille, ciao

Newsgroup: it.comp.lang.c
Titolo: eccezioni in c?

nel manuale del gcc (Extensions to the C Language Family) ho trovato
nothrow
The nothrow attribute is used to inform the compiler that a function cannot
throw an exception.
questo significa che le funzioni lanciare delle eccezioni anche in C?
E come?
Dove posso trovare esempi e documentazione sulle eccezioni in C?
ciao
-- 
Mastupristi?

 Dove posso trovare esempi e documentazione sulle eccezioni in C?
Solo sul manuale del tuo compilatore, visto che sono estensioni non
standard. Nella maggior parte dei casi si tratterà di un sottoinsieme
delle eccezioni del C++, con una sintassi abbastanza simile ma senza far
uso di classi.
--
Cingar
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 questo significa che le funzioni lanciare delle eccezioni anche in C?
No, in C si sviluppa senza eccezioni (purtroppo).
Benché qualche compilatore possa supportare estensioni specifiche e, a
meno che tu non voglia legarti a _quel_ compilatore specifico, devi farne
a meno.


Newsgroup: it.comp.lang.c
Titolo: valori di ritono di main

salve a tutti quando si esce da main con successo, cosa si usa restituire??
Visto che ho motivi diversi per cui terminare il prog devo uscire con codice
diversi? Devo usarli negativi o sono mie paranoie??
Vorrei adottare uno stile "comune" possibilmente
Grazie

 wrote in message
news:ci6ljl$cmk$
1...@carabinieri.cs.interbusiness.it

la funzione main() restituisce all'ambiente che la chiama un int.
Per convenzione un ritorno che vale 0 indica una esecuzione con
successo, un valore diverso da zero indica che e' stato rilevato
un errore.
HTH
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

perdona la pignoleria, quindi valori negativi o poisitivi a mio piacimento
nei casi di errore??
grazie


 nei casi di errore??
Se vuoi essere super pignolo, puoi ritornare le macro EXIT_SUCCESS e
EXIT_FAILURE definite in <stdlib.h>.
--
Cingar
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

Ritorna 0 in caso di successo. Valori negativi in caso di errore. Io
normalmente ritorno valori negativi, ma se noti anche molte funzioni
ritornano valori negativi n caso di errore (read, write, open, etc...)
Anche valori positivi comunque credo vada bene, non so se esiste un vero
standard.


Newsgroup: it.comp.lang.c
Titolo: wx-devcpp6.7

http://wxdsgn.sourceforge.net/
Sembra carino.
Ciao.
Morpheus


Mi piace questo ambiente!!
Ho creato una libreria che con il C++Builder funziona, e anche se
compilata con successo con devC++, ed esportate regolarmente le 
funzioni, ho notato una riduzione del circa 50% rispetto quella
del CBuilder e in più se eseguo un prog che usa la dll (quella devc++)
va in access violation!!
Qualcuno mi può dire il perchè??!?
Newsgroup: it.comp.lang.c
Titolo: funzione per cancellare un file sotto qualsiasi OS

Ciao a tutti, scusate la banalità della domanda ma non ho trovato niente di
adeguato altrove.
Per i miei scopi devo creare un file temporaneo nella dir di lavoro del
programma, solo che poi lo vorrei eliminare all'uscita. Siccome ora sviluppo
su DOS, ma poi devo portare il programma finito sotto UNIX (Solaris) sto
cercando un modo per fare la stessa operazione indipendentemente dalla
piattaforma.
Conoscete una funzione adatta/Pensate sia possibile? (io penso di no perchè
i filesystem sono diversi, come le chiamate al S.O...  è vero?)
In questo caso come posso fare
1-sotto DOS
2- sotto UNIX
Grazie infinite.
--
Marco Coppo - University Of Sheffield
Flat 12 Room 6 - Broad Lane Court
160 Broad Lane - Sheffield S1 4BU
South Yorkshire - UK

 wrote in message
806ull$5uq$1...@bignews.shef.ac.uk...


 piattaforma.
La libreria standard offre la funzione remove().
EMG

 appunto, i dettagli del S.O.
Solo che unlink() non è standard.
EMG

 wrote in message
38270A81...@flashnet.it...


 wrote:
[ snip ]
MC>Per i miei scopi devo creare un file temporaneo nella dir di lavoro del
MC>programma, solo che poi lo vorrei eliminare all'uscita. 
[root@fokhouse /root]# man tmpfile | col -b | grep -A 1 '^\(NAM\|CONF\)'
NAME
       tmpfile - create a temporary file
--
CONFORMING TO
       SVID 3, POSIX, BSD 4.3, ISO 9899
[root@fokhouse /root]#
Ciao ciao,
Andrea
-- 
"...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and 
 the Ugly)."
(by Matt Welsh)

 piattaforma.

Newsgroup: it.comp.lang.c
Titolo: Sorgenti giochi

Salve a tutti,
vorrei sapere se esistono siti che mettono a disposizione i sorgenti di
giochi o se qualcuno ne ha.
Io sarei interessato a giochi di carte o magari giochini spaziali stile
space invaders.
Grazie per l'aiuto :)

 space invaders.
Per Dos ?? Per Linux ?? Per Windows ??
Alex


per linux :-)



da qualche parte qui in casa ho del codice sorgente di diversi
giochi.... di uno space invaders in soli 3kb (tutto assembly),
di qualche videogioco commerciale (doom, doom2, doom3 la vendetta
quando arriverà, heretic, wolf3d, dio bono salvaci tu) e forse pure
qualcosa di carte... ma purtroppo é come cercare un ago nello
stabilimento della fiat ....
cod


Se ti capitasse per caso qualche gioco di carte o uno spaziale
semplicissimo come quel 3k che dicevi sarebbe un grande aiuto :-)
Grazie!!!!

provate su 
www.programmersheaven.com
 o su 
http://sourceforge.net
Dome

 Grazie!!!!
Forse non hai capito che quello di 3Kb e' scritto in assebly, puoi chiamarlo
piccolo ma non certo "semplicissimo" a meno che tu non sia un guru di
assembly (per quale architettura poi ?) nel qual caso ti porgo le mie scuse.
Alex

 per linux :-)
Dai una occhiata su 
http://sourceforge.net
 ci sono molti progetti opensource
.
Alex

 ha scritto nel messaggio
news:3B21F27F...@wappi.com...


 ha scritto nel messaggio
news:KaqU6.5798$fG4.2...@news.infostrada.it...


assembly (per quale architettura poi ?) nel qual caso ti porgo le mie scuse.
hehe, infatti é molto carino :) non é il più piccolo che ho....
ho scritto tempo fa un gioco del tris in 2500byte compilato in
assembly per una ragazza che andava all'uni e che non era riuscito
a fare il compito.... lo aveva troppo complicato.
il più piccolo in assoluto é un gioco che ho trovato parecchi anni
orsono, 450 byte, space invaders... per boot sector
cod

 wrote:
ok .... sto per caricare il primo gioco....
http://www.vibo.net/cod/production/tris.zip
non so x quanto lo tengo li...
 é compreso di sorgenti
cod
Newsgroup: it.comp.lang.c
Titolo: [STD] perchè GCC compila questo codice?

Salve ragazzi.
Un mio amico docente mi ha chiesto come mai il GCC (provate varie versioni
su Linux e Win) compili questo codice senza battere ciglio:
//-------------------------------------------
#include <iostream>
using namespace std;
int main()
{
 int n;
 cout << "Immetti un numero intero: ";
 cin >> n;
 int a[n]; //dovrebbe essere errore!!
 return 0;
}
//-------------------------------------------
E' una questione di opzioni del compilatore?
il problema è nato quando uno studente ha portato un sorgente del genere
(compilato con il Dev-C++, nota incarnazione win32 di GCC/MinGW) che in una
prima istanza non è controllato linea per linea.
In una successiva discussione con lo studente si è addirittura verificato
che il programma allocava correttamente sullo heap.
Io non sono molto pratico di GCC, e per adesso ho risolto fornendogli il
compilatore Borland c++ compiler 5.5.1, che rileva correttamente la
necessità di un'espressione costante nella linea incriminata. Ciò non
toglie
che vorrei venire a capo dell'anomalia, che mi pare davvero strana in un
compilatore del calibro di gcc.
Grazie.
Francesco Pera
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 su Linux e Win) compili questo codice senza battere ciglio:
   In linea di massima, ha ragione il GCC: lo standard C99 ha eliminato 
il constraint della costanza della dimensione dell'array nella sua 
dichiarazione. Immagino che lo standard C++--linguaggio nel quale e` 
scritto il codice da te riportato--segua la stessa linea di pensiero. 
Guarda e stupisci:
<code>
	#include <stdio.h>
	#include <stdlib.h>
	int
	main(void)
	{
	  printf("Enter an integer, positive value: ");
	  fflush(stdout);
	  char input[32];
	  fgets(input,32,stdin);
	  int size=strtol(input,NULL,10);
	  int array[size];
	  array[size-1]=42;
	  printf("array[%d] is %d\n",size-1,array[size-1]);
	  return 0;
	}
</code>
-- 
Alla prossima,
Marco

 su Linux e Win) compili questo codice senza battere ciglio:
Mi meraviglio per il fatto che un docente prima di chiedere "come mai ..."
a qualcuno non provi a cercarsi la risposta da solo: la caratteristica e'
documentata in tutte le versioni che probabilmente ha provato.
http://gcc.gnu.org/onlinedocs/gcc-2.95.3/gcc_4.html#SEC75
http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/Variable-Length.html#Variable%20Length
C:\>iao Angelo


 compilatore Borland c++ compiler 5.5.1,
Bravo, senza offesa, ma aggiornarsi un tantino (do you know C99 ?) non
sarebbe poi cosi` pericoloso... In ogni caso il GCC supportava questa cosa
ancor prima che venisse fuori l'ultimo standard.
--------------------------------
Inviato via 
http://usenet.libero.it

 pensiero.
E invece no.
Il C++ eredita, in parte, dal C89 e le novità del C99 non sono,
purtroppo, incluse  (e come potrebbero? lo standard C++ è
dell'anno prima! il 98!)
In compenso in C++ fai la stessa cosa (e molto altro) con con
std::vector
--
Gerolamo
Newsgroup: it.comp.lang.c
Titolo: consiglio nomenclatura

Ciao a tutti,
chiedo umilmente e preventivamente scusa per la banalità della domanda, 
ma praticamente sono un niubbo. Sto lavorando ad una libreria per la 
manipolazione di stringhe a scopo *esclusivamente* didattico (per 
rinfrescarmi un po' la memoria riguardo al C) e mi chiedevo quale fosse 
la corretta nomenclatura per alcune funzioni. In particolare ho una 
funzione che, data una stringa (come char*) ed un intero rappresentante 
la posizione all'interno della stringa stessa, restituisce il carattere 
a quella posizione. Un'altra funzione, dati gli stessi argomenti, 
ritorna il puntatore allo stesso carattere. Per ora ho usato:
- char charAt(char*,int) --> ritorna il carattere;
- char* pCharAt(char*, int) --> ritorna il puntatore (da qui iol 
prefisso "p").
Avete qualche consiglio a riguardo? Ci sono delle best-practices in materia?
Grazie in anticipo,
Giulio
-- 
OnAir:
http://www.giuliopetrucci.it

 Avete qualche consiglio a riguardo? Ci sono delle best-practices in materia?
Rimanendo nel contesto della nomenclatura, io definirei le due
funzioni cosi':
char char_at(char *s, size_t offset);
char *p_char_at(char *s, size_t offset);
Nel merito di gestione stringhe, se le tue stringhe sono semplici
puntatori a vettori di char terminati con il carattere nullo, quelle
sono le stringhe standard C e non c'e' bisogno di funzioni di
libreria. Infatti la cosa e' talmente normale nell'uso quotidiano che
le funzioni di libreria confonderebbero solo le idee.
Io troverei molto piu' ovvio e semplice scrivere:
s[offset]
invece di
char_at(s, offset)
e
s+offset
invece di
p_char_at(s, offset);
Se invece tu definisci un concetto di stringa tuo (e nessuno te lo
proibisce, anzi) allora la tua funzione potrebbe essere piu'
interessante.
Ma a questo punto invece di usare semplici puntatori a stringhe
standard, definisci una struttura che tu ti gestisci internamente e
stabilisci che in lettura puo' essere gestita come una stringa
qualunque, ma in scrittura bisogna usare le funzioni speciali di
libreria.

 interessante.
E difatti questo sarebbe il prossimo passo! ;-)
Grazie dei consigli,


 char* funzione()  --vs--  char *funzione()
Che io sappia, nessuna.
E' solo una questione di preferenza.
Siccome l'asterisco non si associa al tipo ma al nome di un oggetto,
preferisco scriverlo vicino al nome.

   
E' questione di gusti, io preferisco associarlo al tipo che mi sembra piu'
coerente,  inoltre nel codice  è piu' facile fare richerche di "char*" o 
di  "int*" magari per
cercare tutti i pointer del tipo desiderato che cercare "char<blank>*", 
"char\t\t\t\*" e varianti
similari, specie su codice condiviso ;-)..
brix

 similari, specie su codice condiviso ;-)..
Verissimo! ;-)
Ciao,


 prefisso "p").
Il nome della funzione non dovrebbe essere legato ai tipi che accetta o
restituisce (quindi non userei quel "pCharAt" che č pure alquanto
criptico).
Piuttosto, il consiglio che posso darti č di usare il verbo, all'inizio,
in minsusolo:
findChar()
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it