mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c
Titolo: Variabili locali, cosa accade dopo un Interrupt ?

Salve a tutti.
Mi sono trovato a discutere con un amico circa un problema riguardante le
variabili locali: esse perdono il loro valore al rientro dopo un interrupt?
Per spiegarmi meglio,  nell'esempio che segue:
void test(void)
{
    unsigned int u;
    for (u=0;u<10;u++);
}
#pragma interrupt_handler timer0_ovf_isr:10
void timer0_ovf_isr(void)
{
    TCNT0 = 0xCE;   //reload counter value
    tcount++;
}
la variabile u (locale a test) perde il suo scopo e dunque il valore che
essa ha all'uscita
della funzione, tuttavia mi chiedo cosa accade se durante l'esecuzione,
poniamo durante il ciclo for in cui la variabile u abbia raggiunto il valore
5, occorra
un interrupt (in seguito al quale viene chiamata timer0_ovf_isr ); quando
quest'ultima termina e riprende il ciclo for la variabile u perde il suo
valore?
Secondo me non dovrebbe, ma secondo il mio amico (e prove sul campo) ciò
si verifica.  Io penso ci sia qualche errore sulla gestione dell'interrupt
ma non sono
abbastanza esperto per poterlo dire, magari qualcuno può dare il suo
contributo?
Spero di non avere fatto troppa confusione nell'esporre la questione e
preciso che
faccio riferimento a codice che gira su un Atmel 8535 (microcontroller).
Ringrazio chiunque voglia commentare.
Saluti, Clod.


... butto li un paio di idee....
1. Sono state semplicemente sbagliate le "prove sul campo" prendendo
fischi per fiaschi.... non e' cosi' improvabile.... a me succede
spesso  ;-)
2. Il compilatore non e' "adatto" al processore utilizzato o ha
qualche "problema". Ad esempio il vecchio Borland C++ 3.1 essendo
vecchiotto all'uscita della funzione interrupt ripristina solo i 16
bits bassi dei registri lasciando sporchi i 16 bits alti...con effetti
che puoi immaginare :-(
ciao
Andrea

 > ma non sono



A quanto intendo sia tu che Giuseppe mi confermate che si tratta comunque di
una
questione legata al compilatore, ovvero (eccetto casi di uso var. globali)
non c'entra
l'implementazione ...ho capito bene?
Bye, Clod.


Puoi verificare leggendo il codice assembler generato che all'ingresso della
funzione in interrupt ci siano le istruzioni necessarie al salvataggio dei
registri.
Ciao
Giuseppe

 ha scritto nel
messaggio news:a1v0c8$t94d0$1...@ID-61213.news.dfncis.de...

Newsgroup: it.comp.lang.c
Titolo: C'e' un Interprete o compilatore C gratis?

Sto per iniziare a programmare in C.
Esiste un compilatore o un interprete C scaricabile da qualche parte?
Grazie per gli eventuali consigli
Piero

 Sto per iniziare a programmare in C.
Scusate il mio sistema operativo e' win 95

Piero
Il compilatore DJGPP 2.01 č ottimo per applicazioni a 32 bit e si trova free

 Scusate il mio sistema operativo e' win 95
su ioProgrammo di questo mese c'e` cygnus, oppure scaricalo da internet
www.cygnus.com
 (o .org ?)
---
Ranger, togli .fr dal mio indirizzo per rispondere
http://members.tripod.com/%7Eranger_rg/

Newsgroup: it.comp.lang.c
Titolo: Per chi  usa gcc 4.0 o 4.1

Salve,
  ho appena upgradato il mio compilatore GCC da 3.3 a 4.1, ma con sconforto  
ho notato che il codice compilato dà una marea di warning tutti uguali  
(ovviamente prima non presenti).
../src/calc.c:1011: warning: pointer targets in passing argument 1 of  
'index' differ in signedness
../src/calc.c:1011: warning: pointer targets in assignment differ in  
signedness
a) Cosa significa il warning? Ho cercato invano sulla rete
b) Come si pulisce? (forse la risposta la potrei dedurre dalla prima ;-)
Grazie.
Tibbolo

 signedness
A naso direi che passi un puntatore a signed dove e' richiesto un 
puntatore a unsigned o vice versa. Comunque se posti la linea 1011 di 
calc.c e la dichiarazione della funzione che chiami ti possiamo aiutare 
meglio.
-- 
Devaraja (Xdevaraja87^gmail^c0mX)
Linux Registerd User #338167
http://counter.li.org

 
Purtroppo è proprio così, ma nella maggior parte dei casi non è grave;
potrebbe capitarti per esempio con i puntatori char: di solito sono char *,
magari ti va di metterli unsigned char * e ti dà il warning. Per evitare
basta una semplice operazione di casting al puntatore che assegni.
ciao
-- 
daniele_athome

A naso dite bene....
Grazie

Newsgroup: it.comp.lang.c
Titolo: iniziare a programmare

Mi sto addentrando da poco nella programmazione, vorrei un 
consiglio su un buon compilatore e un editor.
Come compilatore sono incerto su DJGPP(la versione non uffucile) 
a suo favore ha licenza free anche per uso commenrciale, oppure 
Lcc-win32, che però ha liceza free solo per uso personale. 
Mentre per gli editor ho visto "1st Page 2000" che è più 
predisposto per il web...
 
Vi prego, un consiglio ;)
Grazie in anticipo.
-- 
Postato da Alice Newsgroup: lo usi da web ma con le funzioni del newsreader 
http://newsgroup.alice.it
Gerarchie it, italia, it-alt, tin, it.binari. Unico!

 Gerarchie it, italia, it-alt, tin, it.binari. Unico!
gcc come compilatore
vi come editor (o vim, o gvim) - posso capire che all'inizio sembri
ostico, ma una volta imparato ad usarlo mette a disposizione strumenti
che la maggior parte dei più complessi IDE nemmeno si sogna.
Altro consiglio personale: non usare windows. Se proprio non ne puoi
fare a meno (spero non per gusto personale) fai almeno correre una
distro linux in una macchina virtuale. Windows non ha milioni di
strumenti che per un programmatore sono indispensabili, e bisogna
andarli a cercare, mentre su una qualsiasi distribuzione linux sono
solitamente già presenti di default.
Ciao!

 Vi prego, un consiglio ;)
premesso che sono d'accordo con quello scritto da fmassei.
se proprio vuoi windows allora usa code:blocks
Ciao Jack
-- 
http://motoko.dyndns.org

Ringrazio, entrambi per i consigli mi darò da fare..
Cmq per windows, sò bene che nn è adatto per programmare, ma è 
ideato per un'altro tipo di utente; ma io mi sono diplomato su 
questo sistema operativo e lo conoscono abbastanza bene, non lo 
vorrei lasciare... cmq vedremo in futuro come si evolve la 
situazione e poi magari passerò a Linux, però anche essendo un 
sostenitore dell'opensource momentaneamente preferisco restare 
su windows. 
Saluti e grazie ancora per i consigli.
Rassel
-- 
Postato da Alice Newsgroup: lo usi da web ma con le funzioni del newsreader 
http://newsgroup.alice.it


 Grazie in anticipo.
Ti consiglio di passare a Linux
-- 
http://www.000webhost.com/92681.html
Newsgroup: it.comp.lang.c
Titolo: delucidazioni su f(open)

Carissimi Ragazzi scusate,
VI CHIEDO AIUTO SU UNA COSA CHE NON RIESCO DAVVERO A CAPIRE !!!!
IL MIO PROBLEMA è QUESTO!!
Sto cercando di fare un esercizio che mi chiede di
scrivere su un file ti testo con blocco note .txt un file che contenga
massimo tre nomi di sqadre
tipo
Milan Juventus 3-1
sampdoria- milan 4-0
roma -milan 5-0
e devo scriver un programma che legga questo file e mi stampi a video il
risultato
vince il milan 4-0.
ma quello che non riesco a capire è come fare!!!
esistono degli esempi in internet che mi aiutano a capire il procedimento?
Grazie

 vince il milan 4-0.
questo è errato! :)
Ciao Max
-- 
+-----------------------------------------------------------+
| Secondo alcuni autorevoli testi di tecnica Aeronautica,   |
| il calabrone non può volare, a causa della forma e del    |
| peso del proprio corpo in rapporto alla superficie alare. |
| Ma il calabrone non lo sa e perciò continua a volare.     |
|					     Igor Sikorsky  |
+-----------------------------------------------------------+

puoi ottene questo risultato :
Se è un amante del brivido può usare la fscanf :-)
--- bye

 vince il milan 4-0.
Posso non aver capito io, ma qui c'e' qualcosa che non mi torna. Se il 
programma, indipendentemente da quanto scritto nel file, stampa a video 
quella stringa non capisco perche' debba leggere il file...
In ogno caso, credo che il post suddetto ti fornira' qualche chiarimento.
Marcello
Newsgroup: it.comp.lang.c
Titolo: Inserimento strutture dati su albero ordinato

Salve a tutti, sto preparando l'esame di C e non riesco a far
funzionare questo frammento di codice:
//le strutture sono:
typedef struct {
	char nome[10];
	int num1;
	int num2;
} datoin;
typedef struct {
	char nome[10];
	int num;
} datoout;
struct alb {
	datoout out;
	struct alb *sin;
	struct alb *dex;
};
typedef struct alb albe;
typedef albe *alber;
void inserisci (alber *tree, datoout data);
//nella main dichiaro le variabili
alber albero=NULL;
datoin x;
datoout y;
// successivamente leggo da un file bin che ho precedentemente
generato
	while(!feof(f)) {
		fread (&x, sizeof(datoin),1,f);
		strcpy (y.nome, x.nome);
		y.num = x.num1;
//e richiamo la funzione inserisci
		inserisci (&albero, y);
	}
//inserisce y nell'albero ordinato
void inserisci (alber *tree, datoout data) 
{
	//se l'albero e' vuoto
	if ((*tree) == NULL) { 
		(*tree) = malloc (sizeof (alber));
		(*tree)->out = data;
		(*tree)->sin = NULL;
		(*tree)->dex = NULL;
	}
	//altrimenti confronta la stringa dell'albero con la stringa da
inserire
	//per ordinare in modo crescente
	else {
		if ((strcmp ((*tree)->out.nome, aut.nome))>=1) {
			inserisci (&(*tree)->sin, aut);
		}
		else {
			inserisci (&(*tree)->dex, aut);
		}
	}
}
è proprio questa funzione che non va. Probabilmente c'è qualcosa di
errato nell'ordinamento.
Ringrazio tutti per l'attenzione.
Michele

 		(*tree) = malloc (sizeof (alber));
                                   ^^^^^^^^^^^^^^
a occhio mi pare: sizeof(albe)
poi aut sotto non so cosa sia.
ciao.

 ciao.
ciao e grazie ancora.
Michele

Newsgroup: it.comp.lang.c
Titolo: segmentation fault

Ho compilato un piccolo programmino che a run-time mi da l'errore
"Segmentation Fault"
A cosa potrebbe essere dovuto?
grazie

A cosa potrebbe essere dovuto?
qualche puntatore impazzito....
cod

A cosa potrebbe essere dovuto?
Ad un uso di puntatori non inizializzati (il 90% delle volte e'
cosi').
--
Andrea Laforgia - walkietalkie(at)
libero.it
#exclude <windows.h>


Al fatto che l'hai scritto male?
-- 
Enrico Bodo  -   PhD student       
University of Rome "La Sapienza"    
Department of Chemistry

Newsgroup: it.comp.lang.c
Titolo: Come rendere avviabile un CD in automatico?

Vorrei rendere automatico l'avvio di un CD per computer fatto da me
contenente un video di un matrimonio.
Che file devo inserire nel CD?
Grazie per l'aiuto
## Togliere NOSPAM per rispondere ##

Che file devo inserire nel CD?
Qui non c'e nulla di C++ ;-)
Basta creare un file di nome AUTORUN.INF (prima come file di testo e
poi cambi l'estenzione) e dentro ci scrivi:
[autorun]
open=nomefile.xxx 
icon=nomeicona.ico
ciao
Bun]{er
-> Home: 
http://bunkersite.cjb.net
-> E-mail: scorp...@NOSPAMtin.it

 Grazie per l'aiuto
-- 
Ciao, gengisdave
http://digilander.iol.it/gengisdave
Newsgroup: it.comp.lang.c
Titolo: scriver su file.. non funziona

non mi scrive sul file nada... (il file lo crea)... che sbaglio?
#include <stdlib.h>
#include <stdio.h>
main()
{
        FILE *fp;
        int i = 2;
        if ( (fp = fopen("filename", "w")) == NULL)
        {
                fprintf(stderr, "Errore nell'apertura del file %s", *fp);
        }
        fscanf(fp, "Prova %d", &i);
        fclose(fp);
}
--------------------------------
Inviato via 
http://usenet.libero.it

         fscanf(fp, "Prova %d", &i);
fprintf();
la scan e' per l'input... non output...
-- 
    --==> ALoR <==---------------------- -  -   -
  There are only 10 types of people in this world...
  Those who understand binary, and those who don't.

 >
*fp è un puntatore a FILE...che cosa speri che scriva in quell'fprintf con
un tipo %s!??!?!

 Inviato via 
http://usenet.libero.it
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Newsgroup: it.comp.lang.c
Titolo: usare matlab e vc++

Volevo sapere se esistono (e magari quali sono) delle librerie per
interfacciare un applicativo sviluppato con visual c++ con l'ambiente
matlab.

 matlab.
e' OT, ma la risposta e' semplice: matlab dovrebbe funzionare anche come 
motore di scripting, quindi fai uno script, anche al volo, e lo esegui. 
sul come, chiedi sul NG it.comp.programmare.win32
Newsgroup: it.comp.lang.c
Titolo: Interfaccia grafica

Ho scritto un programma in C per il mio lavoro di tesi.
Ora avrei deciso di realizzare una interfaccia per l'impostazione dei dati
di input, di altri parametri e per la presentazione dell'output.
Essendo un lavoro facoltativo non ci vorrei perdere tempo e vorrei ridurro
al minimo la scrittura di codice.
Mi potreste consigliare un ambiente visuale che mi permetta di costruire una
interfaccia grafica con menù etc in modo ultra veloce senza doverci perdere
troppo tempo per impararne l'uso e che si interfacci in modo semplice ad un
programma in C?
Grazie

 interfaccia grafica con menù 
http://wxdsgn.sourceforge.net/
E' stato appena postato un messaggio da Morpheus.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it


GRazie, non avevo capito di cosa si trattava dal post.
Da quanto ho letto devo installare anche DevC, giusto?
Io per scrivere codice uso C++BuilderX. E' strano ma non c'e' alcuna scheda
per costruire interfacce in modo visuale. Eppure il JBuilderX per Java lo
fa.
Strano !!!!
Cmq, lo proverò, grazie.

 per costruire interfacce in modo visuale. 
Infatti, ne abbiamo parlato proprio poco tempo fa.



		ciao e grazie, rz
-- 
http://mrzac.altervista.org
Newsgroup: it.comp.lang.c
Titolo: Progetto C

Mi domando e dico...perché non ci mettiamo d'accordo e tiriamo su un bel
sito con manuale di C in italiano (finalmente), esempi, programmi etc?
Chi sarebbe nel caso disponibile??



Io, a dire il vero, ho scritto una piccola libreria di sorgenti, anche
se mi sono reso conto di qualche bug e sto cercando di correggerla.
Non credo di essere in grado di scrivere un manuale vero e proprio sul
C, quanto piu' una raccolta di considerazioni personali...
Si potrebbe nell'attesa, offrire ai visitatori della pagina la
possibilita' di chiedere chiarimenti su quali sono gli aspetti del
linguaggio che risultano oscuri e vedere di scrivere degli articoli,
da pubblicare nella pagina stessa, che ne trattino approfonditamente
tutti i punti...
E' anche piu' facile, cosi', organizzare la costruzione dello pseudo-
manuale.

 wrote in message
378750a1...@diesel.cu.mi.it...

Sono d'accordo con te....e la mia idea non era lontana dalla tua, nel senso
che anche io avevo in mente di scrivere in modo dinamico. Per esempio, ci
sono un sacco di neofiti che hanno bisogno di basi adeguate per iniziare e
in italiano on line c'é ben poco come sai! Qualcosa sulle basi del
linguaggio l'ho iniziata a scrivere....dobbiamo trovare uno spazio
web...(che ne dici di xoom?)
dare un nome al progetto...magari scegliere un compilatore di riferimento
(Djgpp??)...insomma fanno tutto gli americani...facciamola pure noi
qualcosa!

qualcosa!
Per quanto riguarda il sito, penso che xoom vada bene, quanto al
compilatore e' meglio non far riferimento a nessuno in particolare.
Molte persone, difatti, utilizzano i compilatori Borland C++ (e
Borland C++ Builder), Visual C++, ecc... 
Molti altri programmano per Linux.
Ovviamente si puo' consigliare il GCC/DJGPP (magari offrire una mano
per scaricarlo), ma senza scrivere codice o riferirsi in maniera
specifica ad esso.

 wrote in message
7lao14$nim$1...@aquila.tiscalinet.it...


A disposizione :-)
Benissimo, io penso che questa offerta sia da considerare...

 Solo una cosa....come ci coordiniamo?

 
ab...@programmazione.it


beh...comincio a buttare giù qualche cosa per cominciare!...
Se puo' interessare, ho cominciato a scrivere una serie di "Appunti di
C"...

Andrea Laforgia wrote:

Come no?....fammi sapere

 Marco Abis


proprio...
Io riesco a collegarmi ma come si fa per entrare nelle aree ???

Andrea Laforgia wrote:

Pare sia in fase di lancio...per cui non si va da nessuna parte!!!...puoi vedere
solo quello che ci sarà!!
Newsgroup: it.comp.lang.c
Titolo: Aiuto!!





 


 

void CPosturaDlg::Oncarica() 


{


 


                

TCHAR szBuffer[MAX_PATH];


                

Cfile 
dlgfile(this);            
[dove Cfile è una classe derivata da Cdialog]


 


                

//Get the Windows directory and add to the com bobox


                

GetWindowsDirectory(szBuffer,MAX_PATH);




                

dlgfile.m_main.AddString(szBuffer);


..


..


 


Il codice s
ottolineato produce il 
seguente errore: 












Debug Assertion 
      Failed!


Program: ..\ 
      .....


File: 
      afxwin2.inl


Line:735


 


 


 


 


 


 


 



 
  ha scritto nel messaggio 
news:000801c01eff$a0e611a0$016464c3@nik
...

Newsgroup: it.comp.lang.c
Titolo: while e for

Perchè i cicli di tipo while e derivati sono utilizzati nelle situazioni in
cui non è possibile conoscere a priori il numero esatto di iterazioni,
mentre la for, grazie alla sua logica "punto di partenza; limite; passo
d'incremento", si presta proprio ai casi in cui si può determinare in
partenza il numero di cicli da compiere??
Rispondete grazieee ;-)...
________________________________________________

 ________________________________________________
-- 
Vladislav Valtchev


Io uso il for al posto del while in quei casi li' solo perche' cosi' non mi
dimentico l'inizializzazione del contatore e il suo incremento ad ogni loop,
visto che fanno parte del costrutto.
E poi e' piu' leggibile.
Comunque questione di gusti.
Ciao,
Ema

 Comunque questione di gusti.
Si in effetti in molti casi direi che i due sono interscambiabili.
Il for permette di raggruppare
le istruzioni responsabili dell'inizializzazione, del test e dell'
"incremento" (in senso lato: puo' essere qualunque cosa).e questo puo'
migliorare la leggibilita'.
Non mi piacciono molto invece i for del tipo
for (i=j=5,s=x*y+t,z=5; z+t<6 && funz(i)!=j || i>x; i++,j--,t+=gg(v)){}
Inoltre usando il for posso mantenere piu' localizzate variabili
che mi servono solo come indice di ciclo.
Una differenza sostanziale compare usando l'istruzione continue;
Diciamo che bisogna fare un po' di attenzione, perche' il
continue; nel ciclo for salta al "incremento" e poi al "test".
Invece nel ciclo while salta direttamente al "test" (ovviamente,
essendo il piazzamento dell'"incremento" nostra responsabilita').
ciao.
g.

 in ben 15 linee, scrisse:

E' un discorso di comodità e di compattezza di codice.
In questo caso preferisco il while...
while((c=getchar())!=EOF)
        printf("%c\n",c);
for(;(c=getchar())!=EOF;)
        printf("%c\n",c);
mentre in quest'altro preferisco il for...
for(i=0;i<10;i++)
        printf("%d\n",i);
i=0;
while(i<10)
{
        printf("%d\n",i);
        i++;
}

Newsgroup: it.comp.lang.c
Titolo: Ma il Java dov'è?

Possiedo MS Visual Studio 6.0 edizione enterprise italiana con i relativi
msdn ma non riesco a trovare visual java. Ci dovrebbe essere? Se sě dove?
Grazie e saluti a tutti.

Grazie e saluti a tutti.
Visual J++ č incorporato in Visual InterDev. Se hai installato correttamente
il VJ++ (da me era fornito in un CD a parte) dovrebbe comparirti lo splash
screen (l'immagine iniziale all'avvio del programma) con il logo sia di VJ++
che di VInterDev.
Ciao, Giuseppe

Scusa, ma mi ero scordato di dirti che comunque dovresti avere il gruppo
programmi di Visual J++ nel Menu Avvio. Se non lo trovi o se proprio non hai
il CD di VJ++ comincia a preoccuparti :-) .
Ciao, Giuseppe

>Se sě dove?
E' in un CD a parte. Tremendamente off topic in questo NG.
-------------------------------------------------------
http://members.it.tripod.de/papero/index.html
Newsgroup: it.comp.lang.c
Titolo: getchar()

Problemino con la funzione getchar():
volevo usare getchar() per leggere un input (int) da tastiera, ma al
posto di mandarlo a video volevo fare un confronto (switch - case) io
ho pensato:
...
i = getchar();
j =putchar(i);
switch (j)
{
case 1:
      ....
      break;
...
}
Ma nn funziona...


I'm not prejudiced, I hate everyone equally.

 > }
cioè lo stesso che ha scritto Ermelinda, ma dimenticandosi di confrontare
carattere con caratteri ( gli apici! ). Questo perchè ha utilizzato
getchar() che restituisce caratteri.
"Antonio barbone" <bar...@raffaello.home> ha scritto nel messaggio
news:slrnafng5l...@barbone.bagnoli.home...


Newsgroup: it.comp.lang.c
Titolo: aiuto programmino

Devo realizzare un 'applicazione che soddisfi i seguenti requisiti:
tramite un menů esterno devo poter accedere a scelta ad un insiemedi
programmi su matrici(prodotto matriciale, punto sella, sottomatrice) con
relativo inserimento di dati e stampa dei risultati. Ho iniziato da poco
a studiare il C.
Vi ringrazio anticipatamente per l'aiuto.
Mario

 wrote in message 3AC9933A...@libero.it...


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

mi da il seguente errore in questa funzione cosa devo fare?
/tmp/ccXU83pw.o: In function 'errexit':
/tmp/ccXU83pw.o (.text+0x1b) : undefined reference to '_doprnt'
Vi ringrazio anticipatamente per l'aiuto.
---------------------errexit.c--------------------------------------
# include <varargs.h>
# include <stdio.h>
int errexit(format,va_alist)
char *format;
va_dcl
{
  va_list args;
  va_start(args);
  _doprnt(format,args,stderr);
  va_end(args);
  exit(1);
}
--
Shinji Ikari
E-mail : 
neot...@tin.it
UIN: 32671593
"I'm the worst" - "The End of Evangelion"

 /tmp/ccXU83pw.o (.text+0x1b) : undefined reference to '_doprnt'
Mi sembra evidente che non trova la funzione _doprnt() che non è
standard e della quale non ho mai sentito parlare.
EMG
Newsgroup: it.comp.lang.c
Titolo: offsetof()

Salve,
La macro offsetof() contenuta in stddef.h e' da considerarsi come
un'implementazione particolare di ogni compilatore o e' una macro definita
dal C standard ?
Un programma che la utilizza e' da considerarsi portabile ?
-- 
--
Ciao
Giuseppe

 Un programma che la utilizza e' da considerarsi portabile ?
Per il "C", standard e portabile non sono sinomimi.
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG
Newsgroup: it.comp.lang.c
Titolo: messaggio agli utenti di UNIX/Linux (per compilare le FAQ)

Ciao ragazzi, come avrete visto stiamo cercando di compilare le FAQ del
gruppo.
Servono informazioni specifiche sulle seguenti domande:
- come pulire lo schermo
- come posizionare il cursore sul video
utilizzando la libreria curses.h
se potete postate uno stralcio di codice per entrambi i casi.
Grazie mille
PS. sito FAQ provvisorie: 
http://digilander.iol.it/shiny77/index.htm
--
Marco Coppo
University Of Sheffield

 /* gcc clearmove.c -lcurses -Wall */
Ti ringrazio molto ma l'esempio richiede due approfondimenti:
1) a cosa serve l'opzione -Wall. Ho provato a compilarlo (SuSE Linux 6.1)
sia con che senza e il programma non cambia comportamento, nè ci sono
errori. deduco che che sia un'ottimizzazione..giusto?
2) compilandolo sul mio sistema Linux, per includere le curses devo
mettere -lncurses e non -lcurses. Cosa significa questo? Non ci sono
standard?
Ok, che con il man si risolve tutto, ma dovendolo mettere in una FAQ, vorrei
fornire soluzioni il più possibile prive di ambiguità e quindi esporre tutti
i casi possibili.
Grazie mille


 standard?
Cito a memoria, quindi posso sbagliare...  libcurses.a e' codice
propietario, probabilmente dei Bell Labs o di Berkeley, e non puo'
essere liberamente ridistribuito.  "ncurses" sta per "new" curses, ed
e' un package ridistribuibile con le stesse funzionalita'.  ncurses
risale, credo, agli anni 80, e ci ha lavorato Eric Raymond, il
curatore del "jargon file" (
http://earthspace.net/jargon/
).
Comunque "curses" predata Unix, ed e' nato come software Digital sotto
VMS.  Se avete mai usato "pine" come mail agent, o "lynx" come web
browser, usano tutti [n]curses.
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Univ. of Padova, Dept. of Physics - Padova, Italy            
lor...@pd.infn.it

 1) a cosa serve l'opzione -Wall.
Attiva il massimo livello degli warnings.
EMG

 wrote in message
: 66qa78...@nagash.suidshell.net...
:> /* gcc clearmove.c -lcurses -Wall */
ciao,
la prima l'hanno gia' postata.
: 2) compilandolo sul mio sistema Linux, per includere le curses devo
: mettere -lncurses e non -lcurses. Cosa significa questo? Non ci sono
: standard?
curses come diceva qualcuno e' la lib proprietaria, ncurses quella
opensource. A volte ci sono dei link simbolici a curses nel caso
sia installata la ncurses (in tutti i sistemi free c'e' la 'ncurses')
dunque si compila sia con -lcurses che con -lncurses.
Nella FAQ puoi dire che se hanno un sistema dove ci sono le ncurses
devono usare -lncurses, se hanno Solaris o qualche altro SYSV proprietario
possono usare -lcurses. In ogni caso per sapere quale funziona delle
due basta scrivere 'gcc -lcurses', se l'errore e' "cannot open -lcurses"
devono provare l'altro, se l'errore e' "undefinited reference to main"
e' tutto OK.
antirez

 e' tutto OK.
Ok, grazie mille a tutti. Io nella FAQ per ora ho fatto che mettere di
controllare la pagina man ncurses per le istruzioni sul linkaggio
(orribile!) della suddetta libreria.
Provvederò a integrare.
Ciao a tutti
Macro
Newsgroup: it.comp.lang.c
Titolo: movimento

sto cercando di creare dei piccoli giochi, ma non so come fare per non
far bloccare il programma che aspetta la pressione di un tasto, ma se
il tasto viene premuto esegua ciň che gli ho scritto di fare.
non so se mi sono spiegato comunque ringrazio anticipatamente chiunque
mi voglia aiutare!

 wrote in message
3a36f58f...@news.libero.it...


 }
da quando e' standard kbhit()?

da quando e' standard kbhit()?
Da mai.
E' supportata da alcuni compilatori come DJGPP e Borland C++.
Non c'e' un modo portabile per fare quanto richiesto.
Alcuni compilatori, come i succitati, hanno anche getch(), che insieme
alla precedente, hanno prototipo in conio.h .
--
Andrea Laforgia (ICQ 87230455)
http://www.geocities.com/AndreaLaforgia
"ci sono tre tipi di persone nel mondo : quelli che
 sono bravi in matematica e quelli che non lo sono."

Newsgroup: it.comp.lang.c
Titolo: Sulla sintassi &*puntatore

Date queste righe di esempio :
int* p;
int* q;
p = &*q;
dato che il costrutto " &*puntatore " mi lascia un po' dubbioso,
č corretto interpretare che
p = &*q;
equivale in sostanza all'assegnamento *p = *q; o no ?
"&*q" in teoria dovrebbe stare per "l'indirizzo di ciň a cui punta il
puntatore dereferenziato q", cioč quanto dire "p ora punta dove punta
q"
ma allora perché non scrivere piů semplicemente *p = *q; ?
Oppure p = q; ?
O forse & + * hanno qui un altro significato che mi sfugge ?
Grazie mille a chi potrŕ chiarimi meglio le idee.

 Oppure p = q; ?
qui invece assegni lo stesso indirizzo a due putatori distinti.
-- 
iAN CooG - ANTIFAN #1 di Simone Crisari
Judgement day the second coming arrives
Before you see the light, you must die!
(South of heaven) (Slayer Gig count: 5)

 p = &*q;
Sarà il sonno, ma mi sembra un modo contorto e ridondante di assegnare:
p = q;
(&*p equivale a prendere il riferimento all'oggetto puntato da p... ovvero 
p).

OK grazie a tutt'e due :)
Allora si può concludere che
p = &*q;
equivale a p = q;
Notate che questo costrutto &*puntatore l'ho davvero trovato in un
testo di esempi sul C++, non l'ho inventato io come ipotesi.
Grazie ancora.
Newsgroup: it.comp.lang.c
Titolo: scanf: formato per un long long int

Qual è il formato di scanf per un
long long int (intero a 64 bit ovvero
__int64 in VC++ 6)?
Grazie

 __int64 in VC++ 6)?
Usa il prefisso L, ma ricorda che e` valido solo per il C99.
Luca
-- 
Home: 
http://kronoz.cjb.net
Porc i' mond che cio' sott i piedi!
V. Catozzo

 Usa il prefisso L, ma ricorda che e` valido solo per il C99.
Veramente, raccontata cosi', non e'  molto precisa  :-)
I long long int esistono solo nello standard 99. Il convertitore di 
formato  corrispondente e'  ll (doppia elle)  seguito da i,d,o,x etc.
L va usato per i long double  davanti a convertitori come e,f,g,...
Pero'  i long double esistono anche nello standard 89.
Giorgio

 formato  corrispondente e'  ll (doppia elle)  seguito da i,d,o,x etc.
Giusto, mi ero confuso con il modificatore dei double ;-)
Luca
-- 
Home: 
http://kronoz.cjb.net
"La teoria e` quando sappiamo come funzionano le cose ma non funzionano.
 La pratica e` quando le cose funzionano ma non sappiamo perche`.
 Abbiamo unito la teoria e la pratica: le cose non funzionano piu` e non
 sappiamo il perche`." -- A. Einstein
Newsgroup: it.comp.lang.c
Titolo: [NEWBIE] help!! GCC fantasma

Ripeto: sono un newbie sia riguardo a Linux che C.
Come faccio ad avviare il GCC?
Mi sono procurato una distibuzione Linux che dichiarava di avere GCC
incluso, dopo mille peripezie l'ho installata, e adesso non so da cosa
cominciare!!
Come faccio a compilare del codice?
Ripeto che e' la prima volta che tento di avvicinarmi al C e a Linux.
--
~~~~~~~~~~~~~~~~~~~
And the beast shall come forth surrounded by a roiling
cloud of vengeance. The house of the unbelievers
shall be razed and they shall be scorched to the earth.
Their tags shall blink until the end of days.
- from The Book of Mozilla, 12:10
~~~~~~~~~~~~~~~~~~~

Come faccio a compilare del codice?
Allora, di base tu segui questo iter:
- apri un editor di testo (VIM magari)
- scrivi il tuo programma C
- esci dall'editor (se era vim <ESC>:wq)
- lanci il comando: gcc -o nome_eseguibile nome_file.c
- lanci l'eseguibile con ./nome_eseguibile (nota il "./" prima del
nome).
-- 
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: file

č possibbile leggera i nome dei file che si trovano in una cartella e porli
in un array,lista, o file che sia?
grazie

 porli in un array,lista, o file che sia?
Non in modo standard.
Se usi linux:
it.comp.os.linux.development
Se usi windows:
it.comp.programmare.win32
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
"Chi parla in tono cortese, ma continua a prepararsi, potra` andare avanti;
 chi parla in tono bellicoso e avanza rapidamente dovra` ritirarsi" 
Sun Tzu -- L'arte della guerra

Newsgroup: it.comp.lang.c
Titolo: MasterMind - Opinioni

Ciao raga!
Scusate la mia uscita ma....il termine per consegnare il proprio lavoro
quando č??? Domani a mezzanotte?
Cmq....solo per curiosita...ma i vostri algoritmi quanti tentativi fanno per
100 numeri? Almeno paragonandoci fra noi riusciamo a capire bene o male se
siamo sulla via giusta!
Il mio algoritmo (anche se molto perfezionabile) impiega sui 1500-1600 turni
per imbroccare tutti e 100 i numeri...sono tanti o pochi?
Vabbe... spero in una vostra risposta...
Ciao e grazie da Tdx

Ah! Piccola cosa: sulla pagina web di mastermind, il link per il programma
che crea i numeri casuali non funge. (parlo della seconda versione...quella
linkata in fondo alla pagina).
Ri-ciao a tutti!

 per imbroccare tutti e 100 i numeri...sono tanti o pochi? <snip>
I sorgenti che ho inviato usano in media 6 tentativi a numero.
Best Regards, Andrea ^_^
-- 
-----------------+-------------------------------- .~~~.  ))
 Andrea  Rimicci | arimicci @@           (\__/)  .'     )  ))
-----------------+       aritaly. com   /o o  \/     .~
                                       {o_,    \    {
 C,C++,cgi,miva,Java,php Developer and   / ,  , )    \ .
 OS/2 Warp Server for E-business admin   `~  '-' \    } ))
                                        _(    (   )_.'
---------- OS/2 V5 "Phoenix" --------- '---..{____}
Newsgroup: it.comp.lang.c
Titolo: cercasi traduttore pascal - C/C++

Ciao,
mi chiamo Ekematos, sono uno studente e programmo con Delphi (ahimè, la
versione 1). Sto programmando un motore 3D che utilizza un innovativo
algoritmo per il rendering che, sebbene pochi mi credano, non utilizza
equazioni di rette in 3D (non le ho ancora studiate!). Simil-3D? No, è
proprio 3D, e usa in sostanza una proporzione con le tre coordinate. Per il
momento è possibile solo in wireframe, e cercavo qualcuno esperto di grafica
3D che mi potesse dare una mano. Per favore, ne ho incontrati troppi di
scetticismi finora. Non so che struttura dare ai dati: le TList sono troppo
generiche; gli array non si possono dichiarare in type se non se ne
specifica la dimensione; sarebbe bene una struttura dinamica di puntatori,
ma non sono molto pratico di questo tipo di dati. Dovrei ancora applicare lo
ZBuffer, rifinire il rendering degli oggetti parzialmente visibili e
soprattutto tradurre tutto in C o C++ (magari le parti cruciali in
assembler); ho anche un programma dimostrativo (permette di visualizzare,
spostare e ruotare attorno ad un punto un cubo) che posso mandare a chiunque
me lo chieda.
Data la velocità dell'algoritmo, pensavo di realizzare un motore con grafica
puntiforme (anche perchè renderizzando poligoni mappati diventerebbe un
comunissimo motore), che abbia molta fluidità a discapito di un po' di
grafica. Ancora, però, è tutto in una fase a metà tra la progettazione, la
realizzazione e il debugging.
Mi chiedevo se ci fosse qualcuno con un po' di pazienza e fiducia.
Se questo qualcuno esistesse, per favore mi contatti a
<ekematos@tiscalinet>. Ciao
  Ekematos

me lo chieda.
Ti consiglierei di continuare ad utilizzare Delphi.
Se vuoi passare al C++ non ti posso aiutare, perche' non lo conosco
ancora bene. Il C e' "vecchio" (eehehheeh) e quindi lo eviterei.
Secondo me i contenitori (come TList, TQueue, ecc...) che usa Delphi
sono molto ben fatti. Se vuoi ti do' una mano, nei ritagli di tempo
(pochissimi, a dire il vero) a risolvere i tuoi problemi in Delphi.
L'ambiente di sviluppo in questione compila codice abbastanza veloce
per i tuoi gusti.

 realizzazione e il debugging.
Anche con OpenGL o Direct3D puoi visualizzare solo i vertici! quindi se
_veramente_ il tuo motore è più veloce di tutti, anche utilizzando il tmap
sarebbe migliore, o no?
ciao

 sarebbe migliore, o no?
Forse adesso ho capito! intendi utilizzare una specie di Bitmap 3d?
tipo una matrice che contiene tutte le descrizioni dei vertici?
Beh, sicuramente è una buona idea per le collisioni e soprattutto
le modifiche dinamiche degli oggetti (impatti, esplosioni), però
ha il gravissimo problema dell'occupazione di memoria.
Pensa che un'oggetto 1000x1000x1000 occuperebbe 1GB di memoria!
ciao
Newsgroup: it.comp.lang.c
Titolo: Interrupt 33h per la gestione del mouse

Salve a tutti, ho riscontrato un problema curioso e molto fastidioso. Uso il
borland c++ 5.02 su win98 e sto cercando di ottenere l'output del sorgente
sottostante. L'eseguibile lo ottengo senza problemi ma quando e' il momento
di avviarlo non succede nulla. L'unico modo che ho trovato per riuscire a
leggere l'output e' quello di aprirlo con un debugger e poi runnarlo. Stesso
discorso per il Visual C++ 1.0 su win95. La cosa curiosa e' che dopo,
scrivendo solo
main()
{ getch();}
l'eseguibile non parte lo stesso..
Mi sento impotente come quando mi sono messo davanti ad un computer per la
prima volta sapendo solo il comando dir e facendo a gara con mio fratello a
chi riusciva a mostrare piu' file sullo schermo :)
Ciao, Demo
demo AT usafa DOT com
#include <stdio.h>
#include <conio.h>
typedef unsigned short int word;
typedef unsigned char byte;
int check_mouse(void);
word x_pos(void);
word y_pos(void);
byte buttons(byte * sx, byte * dx, byte * c);
int main()
{
 byte s,d,c;
 if (check_mouse()==0)
    return 1;
   while(!buttons(&s,&d,&c))
   {
    clrscr();
      printf("X pos: %d - Y pos: %d",x_pos(), y_pos());
   }
   return 0;
}
int check_mouse(void)
{
 asm
   {
    mov ah,0x00
      int 0x33
   }
}
word x_pos(void)
{
 asm
   {
    mov ax,0x0003
      int 0x33
 shr cx,1
      mov ax,cx
   }
}
word y_pos(void)
{
 asm
   {
    mov ax,0x0003
      int 0x33
      mov ax,dx
   }
}
byte buttons(byte * sx, byte * dx, byte * c)
{
 word t;
   asm
   {
    mov ax,0x0003
      int 0x33
      mov word ptr t,bx
   }
   *sx=t&1;
   *dx=t&2;
   *c=t&3;
   if (*sx || *dx || *c)
    return 1;
   return 0;
}

[...]
la butto lě:
se stai compilando un programma win32 in console, potrebbe essere che
l'int 33 (gestito dal driver del mouse) non sia definito/attivo
o č un prog dos?

   while(!buttons(&s,&d,&c))
Il servizio 00h dell' int 33h restituisce FFFFh se il mouse e' disponibile
e 0000h se non lo e' nel registro ax, quindi la funzione check_mouse non
restituira' mai 0 (false) ma ffff (true), il tuo if nel main non parte mai,
secondo me
l'eseguibile exe parte ma e' talmente veloce che non te ne accorgi, il
programma comicia e finisce in un attimo.
Prova con :  if check_mouse() != 0
Un'altra cosa, nel corpo della check_mouse metti un return qualcosa,
e' implicito che il contenuto di ax sia il valore di return ma non si sa
mai.
Newsgroup: it.comp.lang.c
Titolo: Calcorare il numero di spazi vuoti?

Grazie ad alcuni aiuti nel NG, comincio a capire 'sta storia che il
getchar() mi restituisce in verità un numero, che a sua volta è da
abbinare ad altro, secondo la tabella Ascii. Cioè se aquisisco 1, in
verità mi stampera'un 49 con il printf ("%d" ...
Mi spingo oltre, seguendo il libro di K&R, e l'esercizio 1.8 (di cui
sul libro non ci sono le soluzioni...) mi chiede di calcolare gli
spazi vuoti.
Ma quando lo lancio, mi dice che di spazi vuoti ce ne sono uno solo,
in verità ne ho inseriti di piu. Dove sbaglio?
Grazie
#include <stdio.h>
int main()
{
int c,nl,ns;
nl=ns=0;
while ( (c=getchar()) !=EOF)
	if (c=='\n')
		++nl;
        if (c==' ')
		++ns;
printf ("%d\n", nl);
}

Nicola wrote:
  #include <stdio.h>
  int main()
  {
  int c,nl,ns;
  nl=ns=0;
  while ( (c=getchar()) !=EOF) {
  	if (c=='\n')
  		++nl;
          if (c==' ')
  		++ns;
}
  printf ("%d\n", nl);
}
nota le parentesi graffe che racchiusono il corpo del while. il tuo 
codice eseguiva solo la prima istruzine seguente al while.
ciao.

 }
facendo questa printf stampi i return non gli spazi
printf ("%d\n", ns);

 e qui bisogna chiuderla }
Il codice e' corretto anche senza mettere graffe. Mettendole il codice
diventa piu' leggibile.
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 diventa piu' leggibile.
Ho detto una fesseria. Ho letto un else che non esiste....


> Mettendole il codice diventa piu' leggibile.
Scusa ma non puoi tu venire a parlare di leggibilita`, quando il tuo codice
l'unica volta che utilizza uno spazio lo fa dove in pochi hanno osato :)
(mi riferisco tra il nome di una funzione e la parentesi tonda)
Ora ti faccio vedere cosa si *intende* per leggibilita`:
#include <stdio.h>
int main( void )
{
    int iChar, iNewlineNum, iSpaceNum;
    iNewlineNum = iSpaceNum = 0;
    while( ( iChar = getchar( ) ) != EOF )
    {
        if ( iChar == '\n' )
            ++iNewlineNum;
        else if( iChar == ' ' )
            ++iSpaceNum;
    }
    printf ( "%d\n", iSpaceNum );
    return 0;
}

> Scusa ma non puoi tu venire a parlare di leggibilita`
OPS!!! Avevo letto male,
ero convinto che avessi scritto che con le graffe era meno leggibile...

 ero convinto che avessi scritto che con le graffe era meno leggibile...
Ok, 2 pari e palla al centro :-)


> Ok, 2 pari e palla al centro :-)
LOL :)

Newsgroup: it.comp.lang.c
Titolo: VOGLIO IMPARARE il C....

ciao a tutti,
mi piacerebbe imparare il linguaggio C visto che utilizzo linux e mi sto
impratichendo in bash scripting....
sapreste consigliarmi qualche guida(possibilmente in italiano) da
scaricare e stampare o qualche libro Molto semplice e chiaro??
Grazie del vostro aiuto
ShareWare? No Grazie.
vote for FREE
Fabio
bm...@hotmail.com

Visto che stai su Linux...
Compra "Il Manuale di Linux" edito in italia dalla Jackson Libri, Aut.
Matta Welsh & Lar Kaufman
In appendice troverai una ricca bibliografia... in innglese
Non temere, i testi fondamentali sono reperibili in italiano
(Se ti interessa costa L.79.000)
Mr_CRACK

Newsgroup: it.comp.lang.c
Titolo: Leggere da riga di comando un testo sottolineato

Ciao a tutti.
Sono uno scarso conoscitore di C ma ho bisogno di fare un programmino
dove mi si chiede una cosa strana secondo me:
Devo fare un'elaborazione in un file prendendo un nome da tastiera ma mi
si dice :
"il testo introdotto dall置tente compare sottolineato".
Se penso al codice ASCII non trovo nessun carattere sottolineato e
questa cosa mi confonde. Come si fa a leggere un testo sottolineato con
una scanf ???
Bisogna fare qualche OR con qualche bit del carattere per eliminare la
sottolineatura e poi elaborare ?
Ciao e grazie
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 una scanf ???
Semplice: in nessun modo.
-- 
Enrico `Trippo' Porreca
Newsgroup: it.comp.lang.c
Titolo: Cerco MASM o TASM

Sapete dove posso trovare il MASM 6.11 o il TASM (possibilmente una delle
ultime versioni ?)
thanks
--
Posted from 
mta04-acc.tin.it
 [212.216.176.35]
via Mailgate.ORG Server - 
http://www.mailgate.org

 wrote in message
19990123192300.MFBP27648.fep04-svc@nora0987...


Newsgroup: it.comp.lang.c
Titolo: Programma palindromo :-)

Ciao!
 Bazzicando sui ng ho trovato questo sorgente, di tale Master...
 /**/ char q='"',
 *a="*//**/char
q='%c',*a=%c%s%c*/};)b(stup;]d[b=]d-472[b)--d(elihw;)q,a,q,q,2+a,b(ftnirps;)
 b(stup{)(niam;731=d tni;]572[b,",b[275];int d=137;
 main()
  {
   puts(b);
   sprintf(b,a+2,q,q,a,q);
   while(d--)
     b[274-d]=b[d];
   puts(b);}
 /* c%s%c%=a*,'c%'=q rahc/**//*"=a*,'"'=q rahc /**/
Se lo osservate bene e' PALINDROMO :-)
E poi si dice che la programmazione sia una cosa seria :-)))

 E poi si dice che la programmazione sia una cosa seria :-)))
E chi l'ha mai detto? :-)
EMG

correttamente. E l'output è il suo stesso sorgente!!!
Pero' avete osservato come e' fatto ?
Si gioca tutto sugli indicatori di commento.
Tra l'istruzione sprintf() e while non c'e' nulla che influenzi
l'essere o meno palindromo.
Ho il forte sospetto che di *qualsiasi* programma, adottando la stessa
tecnica si possa scrivere la versione palindroma.
Addirittura credo che si possa scrivere un generatore di sorgenti
palindromi.
Sbaglio ?
Andrea Laforgia

 Sbaglio ?
Boh, io l'ho appena guardato. Mi rifiuto assolutamente di tentare di
capire obbrobri simili... :-)
EMG

 correttamente. E l'output è il suo stesso sorgente!!!
certo che chi l'ha scritto deve essersi fuso il cervello
TobiX



Non credo.
Se lo osservi attentamente non e' cosi' difficile da capire.
L'uso del buffer viene introdotto per consentire al programma di avere
la simmetria con l'ultima riga di commento, mentre il buffer stesso
serve a stampare il codice sorgente.
Andrea Laforgia
*************************************************
Cerca sempre di percorrere una strada contromano.
Sara' piu' difficile prenderti alle spalle.
*************************************************

 Se lo osservi attentamente non e' cosi' difficile da capire.
Non ho detto che è *difficile da capire*.
Ho detto solo che uno deve essere fuso per *pensare* di fare una cosa del
genere. E' ovvio come funzioni (a posteriori), solo che progettandolo da
zero mi sarebbero girati i cosiddetti già dopo 5 minuti!
TobiX

Newsgroup: it.comp.lang.c
Titolo: quicksort di strutture

Ho una struttura cosě definita:
struct miastruct
{
char s[255];
int k;
}
Devo ordinarne un array di k strutture in base all'array s[255], seguendo
l'ordine alfabetico. Come posso fare? Grazie mille.


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

No, è che mi sono espresso come un cane :-) Ho un numero (che chiamavo k) di
strutture da ordinare. Altra domanda: posso usare una procedura ricorsiva in
multithreading (ossia richiamando se stessa ogni volta in un nuovo) thread?
Grazie.


About quicksort di strutture
sergio wrote:

e una bella lista collegata ?? penso che sia la cosa piu' comoda per le
strutture ...

Newsgroup: it.comp.lang.c
Titolo: Allocazione dinamica stringhe (memcpy)

/*Function C che legge i singoli  caratteri costruendo la stringa che
li contiene ->usando l'allocazione statica;
         ->usando l'allocazione dinamica e le funzioni memcpy(),
memmove(), */
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
void main()
{   int i;
    char c;
    char stringaSTAT[20];
    char stringaDIN[20];
	for (i=0;i<=19;i++) stringaDIN[i]=0;
        printf("Questo programma legge i singoli caratteri \n
costruendo la  stringa che li contiene\n");
	printf("Inserire i caratteri (massimo 20) seguiti da . ed
INVIO\n\n");
        memset(stringaDIN,NULL,30);
	i=0;
	while ((c=getchar())!='.') //acquisisce il carattere fino al (.)
	{ 
	    //ALLOCAZIONE STATICA
		  stringaSTAT[i]=c; //porta il carattere nella stringa
 
        //ALLOCAZIONE DINAMICA
         memcpy(stringaDIN[i],c,0);
         printf("\nI=%d c=%c stringaDIN[i]=%c",i,c,stringaDIN[i]);
		 i++; //incrementa dimensione stringa
	}//End while
 
    stringaSTAT[i]= '\0'; //inserisce terminatore stringa
    stringaDIN[i]= '\0'; //inserisce terminatore stringa
    //OUTPUT
    printf ("\nLa stringa STATICA e' <%s>",stringaSTAT);//Stampa
stringa
    printf ("\nLa stringa DINAMICA e' <%s>",stringaDIN);//Stampa
stringa
}
Perchè usando l'allocazione statica funziona e l'allocazione dinamica
crasha tutto in un runtime error???
Forse ho sbagliato a dichiarare la stringa dinamica?? aiutatemi grazie

 crasha tutto in un runtime error???
Non mi pare che usi l'allocazione dinamica. Per chiarezza, ricorda che
un array (quindi anche le stringhe) e` allocato staticamente quando
a tempo di compilazione e` nota la sua dimensione, e si usa la sintassi
   tipo nomearray[dimensione];
L'allocazione dinamica invece richiede l'uso della malloc() a runtime
e prevede la dichiarazione di un puntatore:
   tipo * puntatore;
   puntatore = malloc(dimensione * sizeof(tipo));
Il fatto che usi memcpy() non ha alcun legame con l'allocazione dinamica.
Saluti,
Marco
Newsgroup: it.comp.lang.c
Titolo: Esercizietto cornice

Salve a tutti,
sono alle prese con un esercizietto che pensavo banale.
si tratta di produrre una cornice del tipo
*************
*QQQQQQQQQQQ*
*QQQQQQQQQQQ*
*************
con altezza e larghezza decise dall'utente.
certo, sul libro ho trovato poi un codice assai elegante per farlo, e
vabbe', tanto di cappello.
ma perche'il mio codicillo non funge?
LCC mi da un errore e si stoppa dopo che inserisco l'altezza in righe.
turbo c lo fa dopo che inserisco la larghezza in colonne (null pointer
error).
qualcuno sa dirmi dove sbaglio?
grazie
mirko
-------------------------
#include<stdio.h>
int alt, largh, i, k, m, n;
int main(void)
{
	char esterno, interno;
	printf("\n\n\tCostruzione di una bella cornice di caratteri\n");
	printf("\nCarattere scelto per la cornice esterna: ");
	scanf("%c", &esterno);
	printf("\nAltezza cornice in righe: ");
	scanf("%d", alt);
	printf("\nLarghezza cornice in colonne: ");
	scanf("%d", largh);
	printf("\nCarattere scelto per il riempimento cornice: \n\n");
	scanf("%c", &interno);
	for (i=1; i<=largh; i++)
		printf("%c\n", esterno);
	for (k=1; k<=(alt-2); k++)
		{
			printf("%c", esterno);
			for (m=1; m<=(largh-2); m++)
				printf("%c", interno);
        }
	for (n=1; n<=largh; n++)
		printf("%c\n", esterno);
	return 0;
}
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

           [CUT]
alla scanf devi passare l'indirizzo della variabile, quindi le due
scanf qui sopra sono sbagliate:
scanf("%d", &alt);
...
scanf("%d", &largh);
...
Saluti,
Tiziano
--
Tiziano Furlan
Webmaster: 
http://www.m4driving.sm
ICQ: 82333613