mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c
Titolo: Come si fa a...





Come faccio a visualizzare un carattere nell'angolo 
inferiore destro dello schermo in modalità testo ?


 


Allego il mini programma che mi 
affligge:


 


 


/*
 * 
File:              ANGOLINO.C
 * 
Descrizione:  Programma di sperimentale
 * Data 
d'inizio:  Sabato, 30 Giugno, 2001, 18:00
 * 
Autore:          
Marco Piovesan
 * 
mail:              
top...@tiscalinet.it
 *
 * 
Copyright:      nessuno
 */


 


#include <stdio.h>
#include 
<conio.h>


 


#define SPIGOLOBD '+'


 


int main ( void 
)
{
        
textbackground(BLUE);   // Coloro lo sfondo per 
evidenziare
        
clrscr();                         
// il contorno dell'area testo.


 


        
gotoxy(80,25);               
// Mando il "cursore" 
nell'angolo
                                            
// inferiore destro,


 


        
putchar(SPIGOLOBD);   // poi "scrivo" nella 25ma riga 
ma
                                            
// a causa dello scrolling il 
mio
                                            
// carattere finisce nella 24ma


        
gotoxy(1,1);
        cprintf("Messaggio di 
prova");


        
return(0);
}



Prova con questa funzione, ciao Gabriele
#include <dos.h>
scrivic (char carattere)
{
union REGS r;
r.h.ah = 0x0a;          // servizio 0Ah di int 10h
r.h.bh
 = 0;             // pagina video
r.x.cx
 = 1;             // numero di caratteri
r.h.al
 = carattere;     // carattere
int86 (0x10, &r, &r);   // chiamata al bios
return (0);
}





Grazie funziona molto bene ma conosci qualche 
altro modo che sia più portabile ?


 


 



Grazie funziona molto bene ma conosci qualche altro modo che sia piů
portabile ?
Ho fatto un po di prove e senza l'utilizzo del bios non sono riuscito
a scrivere alla locazione 80-25 senza lo scrolling del video, il
problema e' che scrivendo qualsiasi cosa il cursore si sposta alla
locazione successiva e la successiva alla 80-25 e' la 1-26 con
l'inevitabile effetto di movimento di tutto lo schermo di una riga verso
l'alto,
e questo con qualsiasi funzione standard del C.
Addirittura l'esempio che ti avevo proposto non sono riuscito a compilarlo
con lccwin32 dove sembra manchi la funzione int86.
Quindi se il tuo programma gira sotto dos puoi utilizzare la funzione che
ti avevo dato, altrimenti io rinuncerei a scrivere nell'angolo basso destro.

se usi il compilatore Borland ti propongo un metodo che non e' portabile, ma
piu' pulito:
ti riporto l'help in linea borland:
   _wscroll                          <CONIO.H>
  __________
 Enables or disables scrolling in console I/O functions.
  Declaration:  extern int _wscroll
 _wscroll is a console I/O flag. You can use it to draw along the edges of a
 window without having the screen scroll.
 Default = 1 (scrolling enabled)
ciao
donCiccio
Newsgroup: it.comp.lang.c
Titolo: fissare un warning di assegnazione

non riesco a capire bene la causa di un warning in una istruzione di
assegnazione.
il problema è minimale, in quanto il programma funziona lo stesso, ma
vorrei arrivare a dove sbaglio.
intanto,  ho un vettore i cui elementi appartengono a un particoalre
tipo interno:
  IdStruct vIdStruct[] = {
    {...},
    {...}
  };
mi serve associre questo vettore ad un puntatore, in questo modo:
  IdStruct (*vIdPtr)[] = &vIdStruct;
fin qui tutto bene.
ma poi voglio mettere vIdPtr dentro una ulteriore struttura:
typdef struct  _ItemInfo ItemInfo
struct _ItemInfo {
  IdStruct (*vIdPtr)[];
 ...
};
detto root un puntatore ad una struttura  di tipo ItemInfo, ho scritto
questa istruzione che mi dà il warning:
  root->vIdPtr = &vIdStruct;
l'errore è:
parser.c:1965: warning: assignment from incompatible pointer type
per quanto ci pensi, non riesco a cogliere la differenza che passa tra
il puntatore isolato (che non dà il warning) e quello definito dentro
root.

sembra che, quando il vettore è inserito all'interno della struttura,
il compilatore ne richieda la dimensione esatta.
siccome la cosa mi secca, sto cercando il modo di utilizzare,
piuttosto che un puntatore al vettore, un puntatore ai singoli
elementi del vettore stesso.
credo che alla fine il codice riuscirà anche più leggero.

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

ho fatto questa dichiarazione sotto Linux:
extern char *sys_errlist[];
ma il compilatore mi da errore di tipo dichiarato diversamente in stdio.h
come lo devo dichiarare ?
--
Shinji Ikari
E-mail : 
neot...@tin.it
UIN: 32671593
"I'm the worst" - "The End of Evangelion"

 -pedantic -D_BSD_SOURCE
[root@fokhouse /tmp]# ./errno
No such process
[root@fokhouse /tmp]#
Ciao ciao,
Andrea
-- 
"...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and 
 the Ugly)."
(by Matt Welsh)
Newsgroup: it.comp.lang.c
Titolo: esadecimale2binaria

Ciao a tutti: un semplice problema trasformare una stringa esadecimale in
binaria, praticamente ho scritto:
FILE *stream;
char stringahex[8]
char stringa_out[32]
stream=fopen("output.txt","a");
sprintf(stringahex,"%x",esavariabile); //esavariabile gią definita..
//ora voglio trasformare stringahex in binario perciņ:
 
for (a=1;a<9;a++)
{
if (stringahex[a]="0")
   {
   stringa_out[a*4-4]="0";
   stringa_out[a*4-3]="0";
   stringa_out[a*4-2]="0";
   stringa_out[a*4-1]="0"
   }
else if (stringahex[a]="1")
    {
   stringa_out[a*4-4]="0";
   stringa_out[a*4-3]="0";
   stringa_out[a*4-2]="0";
   stringa_out[a*4-1]="1";
   }
else if (stringahex[a]="2")
   {
   stringa_out[a*4-4]="0";
   stringa_out[a*4-3]="0";
   stringa_out[a*4-2]="1";
   stringa_out[a*4-1]="0";
   }
//ecc ecc fino a 3-4-5-6-7-8-9-A-B-C-D-E-F
fprint(stream,"%s",stringa_out);
Non ho errori in fase di compilazione ma ottengo un risultato sbagliato,
provando a cambiare piccole cose ricevo o tutti "0" oppure a volta caratteri
strani ascii.. c'č qualcosa di piu semplice da implementare.. o dove sto
sbagliando??
grazie a tutti
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/


questi due saltano all'occhio
1) nei valori assunti dall'indice a per accedere a stringahex
2) nel token usato per la comparazione tra valori if( .... )
3) fprint() non esiste al limite e' fprintf()
4) manca una  chiusura di una graffa , sta prima o dopo della fprint ?
un consiglio spassionato: impara ad usare un debugger e a eseguire i 
tuoi programmi passo-passo , si imparano un sacco di cose
si, esiste una maniera molto piu' semplice ( e probabilmente ) 
efficiente per fare quello che vuoi fare, basta usare un vettore di 
stringhe costanti:
"0000",
"0001",
....
ed qualcosa che dalla codifica esadecimale '0'-'9','A'-'F'  ritorni un 
valore ( numerico ) compreso tra 0 e 15.
e c'e' ne una enormemente piu' semplice usando direttamente esavariabile:
int i;
for(i=0;i<32;i++) {
	if( esavariabile & 0x8000000 )
		fputc(stream,'1');
	else
		fputc(stream,'0');
	esavariabile <<= 1;



dimenticavo, e anche questa e' piuttosto ( molto :-) )importante , i 
vettori:
char stringahex[8]
char stringa_out[32]
se usati come stringhe sono troppo piccoli per contenere i risultati che hai


 Non ho errori in fase di compilazione 
Questo e' assolutamente impossibile.
In ogni caso ricordati di compilare abilitando tutti i warning di
compilazione.
basterebbe fare una cosa simile
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char hex[9], bin[33];
int i,k;
/* tabella di conversione */
char h2b[16][5]=
{"0000","0001","0010","0011","0100","0101","0110","0111",
"1000","1001","1010","1011","1100","1101","1110","1111"};
/* assumo di aver riempito in qualche modo hex[] */
for (i=0; i<8; i++)
{
  /* converto carattere esadecimale in decimale */
  k = (hex[i]<='9' && hex[i]>='0' ? hex[i]-'0' : hex[i]-'A'+10);
  /* accodo la corrispondente stringa binaria */
  strcpy(bin+4*i,h2b[k]);
}
/* fatto ! */
g.


Ora provo!
grazie

Newsgroup: it.comp.lang.c
Titolo: Problema con i socks?

Ho creato un programmino , un client che si connette ad una determinata
porta e con recv() memorizza una stringa di caratteri..
però continua a darmi "Segmentation fault" durante l'esecuzione  :(
vi allego il source, magari qualcuno può aiutarmi a risolvere il prob.
grazie mille

Due cose:
- sei OT
- non postare il codice allegato, ma in-line
--
 Ciao, Luca.
 Reply to 
luca....@tiscalinet.it
Newsgroup: it.comp.lang.c
Titolo: NUOVO

Sono un discreto programmatore in VB
Vorrei passare al C
Come mi consigliate di affrontare l'argomento:
Quale ? C, C++, Visual C++ ?
Vedo che in rete c'è del materiale, ma vorrei
qualche opinione da chi capisce l'avviamento alla programmazione.
Per fare delle prove, prima di acquistare il software,
dove posso scaricare qualche versione anche se ridotta
dell'editor consigliato?'
Grazie
Antonio

dell'editor consigliato?'
Pagare? Ma stiamo scherzando :)  
Guarda e provati questi:
http://digilander.iol.it/mox79/cpl/devel.html#comp
Sono tutti Free oppure a donazioni libere.
Se cerchi compilatori a pagamento c'e' il VC++, pero' a fronte di un
IDE ben studiata dietro c'e' un compilatore non molto performante.
Tra quelli free che ti ho elencato trovi parecchi porting del GCC
(IMHO il miglior compilatore, se escludi quelli specifici per date
piattaforme, sviluppati in genere dalla casa produttrice dei
processori).
Oppure fai una cosa: ti compri l'UltraEdit e poi lo configuri per
compilare i sorgenti con il GCC (che trovi sempre dai link
precedente), anche se il lavoro non e' cosi' immediato.
-- 
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."

Valida? Devi cercare parecchio.
cpp.programmazione.it
 - sezione FAQ inizia da lě
--
Lawrence Oluyede
rhy...@myself.com

Grazie, per incominciare č giŕ qualcosa.
Saluti,
Antoio

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

Qualcuno mi potrebbe suggerire qualche newsgroup che tratta di 
programmazione in Visualbasic ?
mille grazie


??? google ???
g4b0

 mille grazie
it.comp.lang.visualbasic
Questo è uno poi ce ne sono anche altri ma se parti da qui è già un 
buon punto...
-- 
Ciao da Stefano

Nel suo scritto precedente, LoScalzo ha sostenuto :

Errata Corrige:
it.comp.lang.visual-basic
-- 
Ciao da Stefano

Newsgroup: it.comp.lang.c
Titolo: FORCE FEEDBACK

Scusatemi, ho un problema particolare.
Vorrei comprare un force feedback
joystick ed usarlo per telemanipolare un robot (per la mia tesi in
ingegneria elettronica). 
Solo che quando il robot tocca una parete,
vorrei sentire una forza sul joystick.
Per farlo dovrei mandare dei dati
al joystick, quindi dovrei interfacciarmi con lui.
Credo che per fare ciň
sia necessario fare un programma in Visual C++, basandosi sulle directx
dell'MSDN.
Vorrei sapere se avete qualcosa che faccia al caso mio, o se
potete darmi qualche consiglio.
Per favore, aiutatemi!
Grazie, Emidio.
---------------------------------------------------
Inviato da: 151.21.172.91, via 
http://usenet.iol.it

dell'MSDN.
Prova a vedere qualcosa su interfacce aptiche...
ed impallidisci.
Ciao
Ale
Newsgroup: it.comp.lang.c
Titolo: [OT] cygwin: problema di installazione

Ho un piccolo problema di installazione con cygwin. Dopo averlo
installato completamente, e compilando un programma qualsiasi (anche il
classico "hello.c") compare a console il seguente messaggio di errore:
/usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/../../../../i686-pc-cygwin/bin/ld:
cannot find -luser32
collect2: ld returned 1 exit status
Ok, non trova una maledetta libreria. Il problema č che durante
l'installazione, andando a vedere il file di log (setup.log.full) trovo
i seguenti errori:
[snip]
2002/04/05 16:03:03 Installing
file://
ftp.funet.fi/latest/gcc/gcc-2.95.3-5.tar.bz2
2002/04/05 16:03:03 compress_bz::error called
[snip]
Installing file cygfile:///usr/bin/g++.exe
io_stream::mklink
(cygfile:///usr/bin/g++.exe->cygfile://usr/bin/c++.exe)
2002/04/05 16:03:04 could not open usr/bin/c++.exe for reading in mklink
2002/04/05 16:03:04 Unable to schedule reboot replacement of file
C:\cygwin/bin//g++.exe with C:\cygwin/bin//g++.exe.new (Win32 Error 2)
[snip]
Installing file cygfile:///usr/bin/i686-pc-cygwin-gcc.exe
io_stream::mklink
(cygfile:///usr/bin/i686-pc-cygwin-gcc.exe->cygfile://usr/bin/gcc.exe)
2002/04/05 16:03:04 could not open usr/bin/gcc.exe for reading in mklink
2002/04/05 16:03:04 Unable to schedule reboot replacement of file
C:\cygwin/bin//i686-pc-cygwin-gcc.exe with
C:\cygwin/bin//i686-pc-cygwin-gcc.exe.new (Win32 Error 2)
Che penso (a naso) che siano la cagione dei miei problemi. Cosa c'č che
non va nell'installazione? Come faccio a risolvere questo problema? Se
non altro, qualcuno mi sa indirizzare su un ng piů adatto ad un tale
messaggio (so di essere un po' fuori tema)?
Grazie di tutto,
--Heart Disease
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto nel messaggio
news:d5f53d2cafd8cc32864...@mygate.mailgate.org...


 Che versione di windows hai?
A parte il  fatto che il messaggio  a cui rispondi e`  totalmente OT (il
fatto  che si  sia  il  tag non  lo  giustifica,  anzi...), era  proprio
necessario un quoting alla CDC?
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
"Fare l'amore con dieci donne e` fantastico, soprattutto perche` ti
 presentano un sacco di amiche." -- Fabio Di Iorio
Newsgroup: it.comp.lang.c
Titolo: esercizio 1-21 K&R

Scrivete un programma "etab" che sostituisca la stringhe di
caratteri bianchi con il minimo numero di caratteri di tabulazione e di
spazi necessari a raggiungere la stessa spaziatura data in input
il mio risultato è questo, ke ne pensate?
naturamente ho utilizzato solo le cose introdotte nel primo capitolo
del K&R!!
#include <stdio.h>
#define TABSIZE 8
#define MAXLINE 1024
int encode_tab(char line[], int i);
int getline(char line[], int max);
int lenght; /*uso una variabile globale perchè ancora non conosco i
puntatori*/
int main(void)
{
	char line[MAXLINE];
	int i;
	while ((lenght = getline(line, MAXLINE)) > 0) {
		for (i = 0; i < lenght; ++i) {
			if (line[i] == ' ')
				i = encode_tab(line, i);
		}
		printf("%s", line);
	}
	return 0;
}
 /* encode_tab mi conta gli spazi bianchi: se il numero è sufficiente
me li
    sostituisce con un tab*/
int encode_tab(char line[], int i)
{
	int count = 0;
	int j;
	j=i;
	while (line[j] == ' ' && count < TABSIZE) {
		++count;/*contatore degli spazi bianchi*/
		++j;
	}
	if (count == TABSIZE) {
		lenght -= TABSIZE -1;/*diminuisco la lunghezza della stringa di
TABSIZE-1
		                       perchè al posto del primo ' ' metto '\t', ma
i successivi
				TABSIZE-1 spazi bianchi li devo eliminare*/
		line[i] = '\t';
		j = i;
		while (j < lenght) {
			line[j + 1] = line[j + TABSIZE];
			++j; /*elimino le locazioni della stringa occupate dagli
 				spazi bianchi che sono stati sostituiti dal tab*/
		}
		line[lenght] = '\0'; /*inserisco il carattere di fine stringa*/
		return i; /*cioè la posizione del tab '\t' che ho inserito*/
	}
	else
		return j; /*restituisco la posizione del primo carattere diverso
dallo
	                spazio bianco, in modo che in main() l'analisi
				    della stringa continui dal punto giusto*/
}
int getline(char line[], int max)
{
	int i;
	int c;
	for (i = 0; (c = getchar()) != EOF && i < max - 1 && c != '\n'; ++i)
		line[i] = c;
	if (c == '\n') {
		line[i] = c;
		++i;
	}
	line[i] = '\0';
	return i;
}

 
esiste una soluzione piu' 'economica' che non bufferizza l'input e che 
tra l'altro non presuppone una lunghezza massima della linea e non fa 
uso della printf che probabilmente e' la funzione piu' grossa 
all'interno della libreria standard.
puoi tranqullamente processare un carattere alla volta ....

intendi con getchar e putchar?
ma in questo caso non modifico la stringa, ma solo la visualizzazione
della stringa!!
Non è la stessa cosa, credo.



hai ragione, ma K&R presuppone che quando esegui il programma tu faccia
una cosa del genere:
./nome_prog < INPUT_FILE > OUTPUT_FILE
dove ovviamente INPUT_FILE contiene il testo iniziale
e OUTPUT_FILE quello finale, cioe' quello che dovrebbe essere visualizzato
a schermo
ciao

capito!
grazie a todos ;)
Fabio Z Tessitore ha scritto:


 
a parte il fatto che comunque  la stringa ( linea letta ) la butti ad 
ogni iterazione.
comuqunque il senso degli esercizi del KR e' spesso la creazioni di 
'filtri' programmi che ricevono in ingresso uno stream di dati ( file o 
testo digitato tramite la console ) e ne emettono in uscita una versione 
opportunamente modificata
Newsgroup: it.comp.lang.c
Titolo: chiamata int21

Dovrei utilizzare la routine 0x09 (Termine di un programma) di servizio 
del dos facendo una chamata int21, la documentazione mi dice che devo 
settare il registro CS con l'indirizzo del prefisso del segmento del 
programma. Ok! mi dite per favore come faccio a prendere quest'ultimo?
mille grazie
-- 
Posted from 195.212.29.118 by way of 
smtp2.libero.it
 [193.70.192.52] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Ok! mi dite per favore come faccio a >prendere >quest'ultimo?
La tua domanda sarebbe stata più appropriata su newsgroup relativi
all'Assembly.
Cmq un piccolo esempio, nonché quello che viene fatto sempre più spesso
quando si inizia (nota: non ho mai fatto Assembly professionale e non lo mai
studiato a scuola, quindi non garantisco la sicurezza dei suoi contenuti):
.model small
.stack 100h
.data
    messaggio db "ciao$"
.code
start:
    mov ax, seg messaggio
    mov ds, ax
    mov dx, offset messaggio
    mov ah, 09h
    int 21 ; chiamata all'interrupt del dos
    mov ah, 4Ch
    int 21
end start
Personalmente penso che tu voglia inserire un parte di codice Assembly in un
programma C. Come facevo io era:
segment a
assume ds:a, cs:a ; faccio in modo che sia il data
                            ;segment che il code segment
                            ;puntinoallo stesso segmento
messaggio db "ciao$"
start:
    mov ax, seg messaggio
    mov ds, ax
    mov dx, offset messaggio
    mov ah, 09h
    int 21 ; chiamata all'interrupt del dos
    mov ah, 4Ch
    int 21
end start
Molto probabilmente qualsiasi compilatore C non ti accetterà la direttiva
.model, che sarebbe di grande aiuto al tuo problema in quanto gestisce
automaticamente i segmenti mettendo " a posto " i registri.
Quindi l'unico caso è l'utilizzo della direttiva assume, ma nutro seri dubbi
a proposito.
Forse qualcuno più esperto di me su tali interfacciamenti ti saprà dire
qualcosa di più.
Ciao e spero di esserti stato di aiuto.

> segment a
mi autocorreggo:
a segment
assume ds:a, cs:a ; faccio in modo che sia il data
                             ;segment che il code segment
                             ;puntino allo stesso segmento
 messaggio db "ciao$"
 start:
     mov dx, offset messaggio
     mov ah, 09h
     int 21 ; chiamata all'interrupt del dos
     mov ah, 4ch
     int 21h
a ends
end start

Newsgroup: it.comp.lang.c
Titolo: [REQ] C - -

Qualcuno lo conosce?
--
Best regards,
Ciro Mattia Gonano
aliases: Lestat de Lioncourt
             Saraquel
             Lord Azariel
ICQ#: 52631406
ICQ#: 110819144
________________

 Qualcuno lo conosce?
sě, il suo inventore saltuariamente spamma la categoria it.* tessendone 
le lodi

Qualcuno lo conosce?
C-- se non erro nel 98 venne distribuito un compilatore per
questa variante del C insieme alla rivista DEV, il cd é colorato
di rosso.
a suo tempo l'autore l'aveva sviluppato per realizzare facilmente
in C device driver e componenti leggeri per il sistema che avevano
bisogno di interfacciarsi all'hardware
cod

Io sapevo anche dell'esistenza del C+...
Newsgroup: it.comp.lang.c
Titolo: grafica

ciao,
sono un newbie a caccia di infos per un programmino che sto cercando di 
fare.
(lo trovate in calce)
Lo scopo è aprire una serie di  jpg, visualizzarli e poi farli ruotare 
di 90 gradi a sx con il click sx e a dx con il click a dx.
Avete idea di cosa posso/devo aggiungere per fare una cosa simile 
(magari sia in win che in linux)?
ciao
Paolo
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <graphics.h>
void tileLoader(void){
   int TILE1[4];
   int TILE2[4];
   int TILE3[2];
   int TILE4[1];
   TILE1[0]=(open c:\MyTiles\tile01a.jpg, O_RDONLY)
   TILE1[1]=(open c:\MyTiles\tile01b.jpg, O_RDONLY)
   TILE1[2]=(open c:\MyTiles\tile01c.jpg, O_RDONLY)
   TILE1[3]=(open c:\MyTiles\tile01d.jpg, O_RDONLY)
   TILE2[0]=(open c:\MyTiles\tile02a.jpg, O_RDONLY)
   TILE2[1]=(open c:\MyTiles\tile02b.jpg, O_RDONLY)
   TILE2[2]=(open c:\MyTiles\tile02c.jpg, O_RDONLY)
   TILE2[3]=(open c:\MyTiles\tile02d.jpg, O_RDONLY)
   TILE3[0]=(open c:\MyTiles\tile03a.jpg, O_RDONLY)
   TILE3[1]=(open c:\MyTiles\tile03b.jpg, O_RDONLY)
   TILE4[0]=(open c:\MyTiles\tile04a.jpg, O_RDONLY)
}
int main(int argc; char *argv[]);
{
   tileLOader();
}


Ma guarda che di quello che hai scritto come codice non funziona
nulla. Neanche come bozza di codice.
Premesso che mancano un po' di "punti e virgola" e che tra gli
argomenti del main ci va la "virgola" e non il "punto e virgola", i
TILEx li hai dichiarati come "int" poi ci metti dentro delle stringhe?
Oltretutto quelle stringhe dovrebbero essere dei comandi?
Un file si apre con la funzione open() o fopen() (man open   man
fopen)
Forse ti serve un manuale di C prima di fare tutto cio'.
Ciao
Newsgroup: it.comp.lang.c
Titolo: Dimensione ARRAY

Problema:
DJGPP
Vorrei lavorare con una matrice ad es.4000x4000
ma quando vado a dichiarare 
  float mat[4000][4000];
oppure 
  int mat[4000][4000];
pur compilando, il programma non gira
e mi butta fuori.
Solo se mi mantengo sotto i 350 circa 
allora non si lamenta.
Come risolvo il problema?
Grazie.
massimo...@supereva.it
massimo...@supereva.it
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG


Metti static int mat[4000][4000], credo sia per lo stack???
Ciao
--
Timothy Redaelli

 e mi butta fuori.
Direi che non c'e` abbastanza spazio nello stack. Prova ad allocarli
nello heap tramite malloc:
float *mat[4000];
int i;
for (i = 0; i < 4000; i++)
	mat[i] = malloc(4000 * sizeof(float));
mat[2][5] = 3.14;
...
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
ATTENZIONE: il mio indirizzo email e` cambiato, quello vecchio verra` 
disabilitato a breve.
The trouble with computers is that they do what you tell them, 
not what you want.
D. Cohen

Newsgroup: it.comp.lang.c
Titolo: OT codifica binaria!

Ciao a tutti e scusate per l'OT, avrei bisogno di qualche esempio di 
codifica in standard IEEE-754!
Qualcuno mi saprebbe indicare qualche link?
Grazie!
Francesco
-- 
Per rispondermi in privato togliere NOSPAM

 Qualcuno mi saprebbe indicare qualche link?
Se ti interessa conoscere il formato qui trovi un mio vecchio  
messaggio che lo spiegava (spero in modo comprensibile):
http://groups.google.it/groups?hl=it&lr=&selm=slrnc8rd9e.104b.un%40aidee.softshark.home
Ciao.
-- 
BSD is for UNIX lovers -- linux is for Windows haters.

Newsgroup: it.comp.lang.c
Titolo: HANDLE FILE etc

Ciao, non riesco a capire come sono definiti  HANDLE, FILE etc,
intendo che tipi sono? le api sono un casino, sono inclusi dentro
windows.h se non ho capito male.
ciao e grazie

ciao e grazie
Ciao e prego.


ok  unica cosa che chiedo e se per caso qualcuno ha un link dove
vengono elencati tutti, l' ho chiesto a posta (per capire che parola
chiave utilizzare) in quanto non so come cercare un elenco completo.
grazie ancora

grazie ancora
Se ti riferisci agli handle, qui:
http://msdn2.microsoft.com/en-us/library/aa383751(VS.85).aspx
Prola chiave: Windows Data Types

Newsgroup: it.comp.lang.c
Titolo: [OT][ANN] www.java-vs-csharp.com

Non essendoci ancora un newsgroup italiano dedicato a C#, vi preghiamo di
scusare l'off-topic.
Argo Systems, un'azienda di consulenza e sviluppo software, ha raccolto e
documentato i risultati di un proprio progetto di porting da Java a C# e li
ha messi a disposizione su un sito dedicato:
 
http://www.java-vs-csharp.com/
I contenuti sono pubblici ed accessibili a tutti. Attualmente e' in linea la
versione in italiano, quella in inglese lo sara' a breve.
Naturalmente ogni suggerimento o critica (costruttiva) saranno ben accetti.
Vi aspettiamo numerosi.
   Argo Systems srl
   Reggio Emilia

Almeno JAVA gira su tutte le piattaforme!!!
CSHARP su quali piattaforme gira???
solo su quelle Microsoft ovviamente, e a partire da .NET
quindi, non 'e' un paragone!!!!
č sicuramente meglio JAVA.

 wrote:

siete OT
ps. ROTFLLLLLLL :)
--
Lawrence "Rhymes" Oluyede
rhy...@myself.com
Newsgroup: it.comp.lang.c
Titolo: Problemi con il Winsock

Mi sto avvicinando alla programmazione del wnsock, ma ho
alcuni problemi già dall'inizio.
Un pezzo del  programma che ho scritto:
#include <stdio.h>
#include <string.h>
#include <winsock.h>
main ( )
{
	WSAdata primo
	SOCKET secondo
	....
	....
	....
     closesocket(secondo);
}
Il problema è che non trova il tipo di dato WSAdata...
Io ho controllato nel file <winsock.h > è ho trovato la dichiarazione
del tipo di dato WSAdata, ma non capisco perchè il compilatore non lo
trovi...
Ho provato su vari compilatori ma sempre lo stesso risultato:
 - Borland C++ 5
 - Borland C++ Builder 4.0
 - Dev C++   3.99
 - LCC-Win32
Grazie mille a chi mi potrà aiutare..
Ciao
Lawrence Oluyede
rhy...@tiscalinet.it
"Per cambiare, 
per diventare un' altra cosa
dobbiamo prima sapere cosa siamo"
Bruce Lee

Non ne sono sicuro ma oltre a includere winsock.h mi sembra che dovresti
inserire nelle opzioni la libreria winsock.lib o winsock2.lib o qualcosa di
simile, altrimenti in winsock.h avrai solo il prototipo della funzione che
dovra´ essere inclusa nel progetto e che quindi deve risiedere in qualche
file di libreria o dll.

Devi includere la libreria WS2_32.lib nella maschera del project Settings (Alt + F7),sotto la scheda link,casella di testo Object Library Module.
Ciao
--
TiscaliFreeNet, libero accesso ad Internet.
http://www.tiscalinet.it
--
Posted from 
twingo.tiscalinet.it
 [195.130.224.85] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Newsgroup: it.comp.lang.c
Titolo: Mi scuso con tutti (per favore apritela)

 Vi rivolgo ancora le mie piů sentite scuse.
Fossero tutti cosě corretti...
EMG

 Grazie.
Ego te absolvo in nomine patris, filiis et spiritus santis, amen. (in
latino non sono mai stato molto forte, pero' il concetto e' chiaro) :-)
Ciao, Luca.
-- 
*******************************************************
       "Dio non e' morto.
        E' vivo e sta lavorando
        a un progetto
        meno ambizioso"
				    graffito anonimo
  Reply to 
bia...@maganet.net
*******************************************************
Newsgroup: it.comp.lang.c
Titolo: p

p

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

Facendo riferimento a questo programma:
#include <stdio.h>
int main()
{
   FILE *p;
   char s[15];
   p=fopen("dati.txt","r");
   fscanf(p,"%c%s%c%s%s%s",s,s,s,s,s,s);
   fclose(p);
   return 0;
}
Assumendo che il contenuto del file dati.txt sia: prova di esame del 13/9/00
Ragazzi sapete dirmi cosa contiene s?
Vi ringrazio.

 Vi ringrazio.
Prego.
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Univ. of Padova, Dept. of Physics - Padova, Italy            
lor...@pd.infn.it

 ha scritto nel messaggio
news:rmbsxr2...@mlinux.pd.infn.it...


 Mamma quanto sei simpatico!!!!!
Non voglio essere simpatico.  Quello che non voglio fare sono i
compiti degli altri...


 ha scritto nel messaggio
news:rmu2bj2...@mlinux.pd.infn.it...


esame" volevo vedere se era giusto!!
Non so se lo standard C indica da qualche parte che scrivere
           fscanf(p,"%s%s",buf,buf);
e' equivalente a scrivere
           fscanf(p,"%s",buf);
           fscanf(p,"%s",buf);
(chi dice che fscanf non e' autorizzata a eseguire le scritture
dei valori nelle variabili in ordine sparso?)
Dando pero' per buona questa sequenzialita' non dovrebbe essere
difficile capire cosa succede...
Comunque... visto che tanto l'appello e' passato...
fscanf legge i dati saltando gli spazi iniziali e fermandosi
al primo spazio quando leggi una stringa con '%s' e non salta
gli spazi iniziali se leggi un carattere con '%c'.
Questo significa che:
   fscanf(p,"%c%s%c%s%s%s",s,s,s,s,s,s);
   %c  legge 'p'
   %s  legge 'rova'
   %c  legge ' '
   %s  legge 'di'
   %s  salta ' ' e legge 'esame'
   %s  salta ' ' e legge 'del'
Quindi il contenuto del buffer e' "del" (sempre che come gia'
detto sia permesso assumere che fscanf scriva i risultati
nell'ordine di estrazione dallo stream).
Temo quindi che la risposta sia decisamente sbagliata.
Perche' secondo te doveva contenere "prova di esame" ?
Andrea
PS: Non ti costava meno tempo compilare il pogramma che
    fare numero due posting su usenet ?
--
Andrea Griffini, Programmer
http://www.netservers.com/~agriff

     fare numero due posting su usenet ?
Male; undefined behavior puo' voler dire un core dump, la
formattazione dell'hard disk o demoni che escono dal naso; oppure
anche quello che ti aspetti in base ad una logica che sembra naturale
ma non e' basata su alcuna regola codificata.
Vedi ad esempio la domanda/risposta della faq list di comp.lang.c
numero 3.2, che dice: "Col mio compilatore, le istruzioni: int i=7;
printf("%d\n",i++*i++); scrivono 49.  Ma, qualunque sia l'ordine di
valutazione, il risultato non dovrebbe essere 56?"

Newsgroup: it.comp.lang.c
Titolo: Agli inizi col C

Salve a tutti,
sono agli inizi con C e non riesco ad andare avanti con un'esercizio:
 
struct corso {
        char titolare_corso[50];
        struct corso *next;};
 
 
void creaElemento(struct corso **t, char titolare_corso[50] )
{ struct corso *nuovo;
nuovo = (struct corso*)malloc(sizeof(struct corso));
nuovo->titolare_corso=titolare_corso;  /*riga con errore*/
*t=nuovo;
}
 
 
l'errore che mi da ï¿œ il seguente:
 
incompatible types in assignment of `char*' to `char[50]'
 
grazie

 
 
Sono array (o stringhe, se vuoi) non sono variabili!
Qualcosa come:
strcpy(nuovo->titolare_corso, titolare_corso);
dovrebbe fare al caso tuo..
Ciao!

 dovrebbe fare al caso tuo..
 
Grazie mille!

Newsgroup: it.comp.lang.c
Titolo: Dimensione del file e allocazione dinamica del buffer

Qualcuno di voi sa come impostare la dimensione del buffer di lettura
di una read dinamicamente?
Cioč vorrei leggere tramite la stat la dimensione del file e poi
impostare la dimensione del buffer di conseguenza!
Grazie
Tzu

 impostare la dimensione del buffer di conseguenza!
Se sei n grado di leggere la dimensione del file tramite stat(), cosa
ti risulta difficile?
char* buffP = NULL;
char* fileP = "nome del file che ti interessa";
struct stat fInfo;
   if(!stat(fileP, &fInfo))
   {
      buffP = malloc(fInfo.st_size);
      if(NULL != buffP)
         read(fd, buffP, fInfo.st_size);
    }
Ovviamente da usare con giudizio, soprattutto per file dimensioni
rilevanti.
HTH
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG
Newsgroup: it.comp.lang.c
Titolo: funzione alberi

Devo implementare una funzione che conti il numero di nodi di un albero con
un particolare valore, ad esempio 'b'. Ho scritto questo codice, ma non mi
funziona.
int conta_b(tree *t)
{
 static int i=0;
 if (t!=NULL) {
  conta_nodi(t->left);
  if (t->data=='b') i++;
  conta_nodi(t->right);
 }
 return i;
}
Non capisco perche' non funziona, anche per il fatto che un'altra funzione
analoga (per contare tutti i nodi) funziona benissimo. L'altra funzione e'
cosi:
int conta_nodi(tree *t)
{
 static int i=0;
 if (t!=NULL) {
  conta_nodi(t->left);
  i++;
  conta_nodi(t->right);
 }
 return i;
}
--
----------------------------------------------------------------------------
There are 10 kinds of people in the world:
those who understand binary, and those who don't
----------------------------------------------------------------------------

 ha scritto nel messaggio
news:3g2Fa.73849$Ny5.2...@twister2.libero.it...


 stessa "conta_b", e non "conta_nodi" (altrimenti di restituira' sempre
0...)
Un errore di distrazione... scusatemi!!!

 Un errore di distrazione... scusatemi!!!
Un errore di copia-incolla ;-)
Tommy

> Un errore di copia-incolla ;-)
Si, per la precisione. Cosi' imparo a non incollare piu'!

Newsgroup: it.comp.lang.c
Titolo: Quale ambiente per programmare in c?

Cosa posso usare su win xp,non riuscendo più a far funzionare il DJGPP?
Borland c?

Dev C++ : 
www.bloodshed.dev
Borland Free Compiler 5.5 
www.borland.com
Lcc : cerca con google
cygwin (che perň č un ambiente di emulazione linux/unix)
Ciao
Wezzy

Io faccio girare djgpp perfettamente su WinXP pro eng... magari prova la
nuova versione...

 
Con Dev-C++ o Microsoft Visual Studio 6.0

Newsgroup: it.comp.lang.c
Titolo: Lezioni Online, esiste qualcosa?

Esiste qualche sito che permetta di fare lezioni online di C con tanto
di esercizi e valutazioni finali? magari un esame simulato sarebbe
l'ideale!!
quindi servirebbe:
Teoria, pratica e esame.
Grazie a tutti.
Saluti.

 Teoria, pratica e esame.
Prova sui siti delle università, spesso ci sono le dispense di teoria e 
gli esami degli anni passati su cui esercitarsi. Prova a cercare corsi 
come Calcolatori Elettronici, nelle pagine di ingegneria informatica.
Per le valutazioni però non saprei.
Ciao
-- 
Sergio


wrote:

ok! grazie del consiglio! ci darò un'occhiata.
Ciao.

Newsgroup: it.comp.lang.c
Titolo: Tutorial sulla gestione dei file in C

Cerco un tutorial sulla gestione dei file in C.
Francesco

 Cerco un tutorial sulla gestione dei file in C.
Cerchi ? sei sicuro ?
Io ho cercato su Google e ho trovato, per esempio:
http://www.deakin.edu.au/~agoodman/ctutorial/816.pdf
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Ti ringrazio, sei stato molto gentile. A dire il vero, ho cercato su 
google, ma forse non usando le parole chiavi opportune. Sono stato molto 
generico, cercavo "C tutorials" o "C programming tutorials"
Francesco

 generico, cercavo "C tutorials" o "C programming tutorials"
Un pò troppo generico.  Io ho cercato con "file management" e "C language".

Newsgroup: it.comp.lang.c
Titolo: URGENTE esercizio d'esame #1

Mi aiutate a risolvere questo esercizio che devo portare entro giovedi...
Sotto c'e' la mia probabile soluzione ma non gira,ho toppato alla grande o
si puo' aggiustare qualcosa direttamente dalla mia soluzione? ecco il testo:
Il "peso di una stringa" č la somma dei codici ASCII dei caratteri che la
compongono.Definire una funzione C che,ricevendo un vettore di stringhe la
cui fine č indicata da un puntatore nullo (oltre ad altri eventuali
parametri),restituisca la parola con il peso maggiore ed il relativo peso
(se 2 o piů stringhe hanno peso uguale massimo la funzione deve restituire
la prima).
FUNZIONE CHE CALCOLA IL PESO DI UNA STRINGA (funziona!!)
int peso(char *stringa)
{ int  i,peso=0;
  for (i=0;i<=strlen(stringa);i++)
    peso+=stringa[i];
  return peso;
}
SOLUZIONE ESERCIZIO (e' una bozza,non soddisfa tutte le specifiche,ma cmq
non funziona)
char *peso_maggiore(char **vettore)
{  char *vs=&vettore,*maggiore;
   int  pesotemp=0;
   while (*vs)
   { if ( peso(vs)>pesotemp )
       {maggiore=vs;
        pesotemp=peso(vs);
       }
     vs++;
   }
   return maggiore;
}
GRAZIE A TUTTI!

 }
cosi' con 'vs' lavori sulla prima stringa dell'array e non sull'array
stesso.
'vs' dovrebbe essere dello stesso tipo di 'vettore'.
 char *peso_maggiore(char **vettore)
 {
    char **vs,*maggiore=*vettore;
    int  p,pesoMax=0;
    for( vs=vettore ; *vs ; vs++ )
    {
      p=peso(*vs);
      if( p>pesoMax )
      {
         maggiore=*vs;
         pesoMax=p;
      }
    }
    return maggiore;
 }
ciao
donCiccio

 }
Ci sono alcuni errori:  ad esempio char *vs = &vettore; non č un
assegnamento corretto (forse volevi fare char **vs =
vettore). Ma mi sembra inutile puoi utilizzare direttamente il parametro
vettore nel codice tanto non viene modifcato il suo indirizzo in
uscita dalla funzione. Poi ci sono alcune inefficienze secondo me, come il
fatto che calcoli 2 volte per ciclo il peso della "stringa" (2 volte se č
verificata la condizione dell' if). Io farei invece cosě:
char *peso_maggiore(char **vettore)
{
 int  pesotemp = 0, weight;
 int  i, k = 0;
 for(i = 0; vettore[i] != NULL; i++)
 {
  weight = peso(vettore[i]);
  if(weight > pesotemp)
  {
   k = i;
   pesotemp = weight;
  }
  i++;
 }
 return vettore[k];
}
Alberto.

grazie ad entrambi,PERO' li ho provati tutti e 2 ma nessuno funziona...:(
e poi forse non ho ben capito cos'e' un vettore di stringhe.
mi date un esempio di come si costruisce?GARZIE ANCORA
--
www.sitissimo.3000.it

 mi date un esempio di come si costruisce?GARZIE ANCORA
int main()
{
    char *vettore[] = {"cioij", "dgsg4353", "gdgdds", NULL};
    printf("%s\n", pesomaggiore(vettore));
    return 0;
}

ok grazie igor,sbagliavo xche non mettevo il NULL alla fine
dell'inizializzazione,pensa che stupido!
Cmq GRAZIE MILLE,il tuo programma FUNZIONA,devo solo ritoccarlo in alcune
parti...
ciao
--
www.sitissimo.3000.it
Newsgroup: it.comp.lang.c
Titolo: PER INIZIARE

Ragazzi, sto cercando una lista che mi dice tutti i tipi di librerie
supportate e disponibili in C/C++
fatemi sapere.
Ciao e grazie
il mio e-mail: 
loa...@libero.it

 wrote:
E' un modo strano per cominciare...
Prova in C:\Program files\Microsoft Visual Studio\include
qui , sempre per cominciare si intende, prendi tutti i files *.h e
funzione per funzione vai su 
www.msdn.microsoft.com
 e cerchi un po' di
documentazione...
"anche un viaggio di migliaia di miglia comincia con un solo passo"
Per cominciare ti consiglio di provare a scrivere un programmino,
anche facile facile. Ciao.


Newsgroup: it.comp.lang.c
Titolo: Come usare una libreria esterna (zlib)

Ciao a tutti,
 sto sviluppando una applicazione usando il compilatore gcc fornito dal
pacchetto DJGPP. Avrei intenzione di usare la libreria zlib-1.2.1 ma ho
difficoltà nella sua installazione.
 Da Internet ho scaricato il pacchetto contenente la libreria ZLIB1.DLL:
come si usa? Il file allegato
 usage.txt dice testualmente (capisco che non si riferiscono a DJGPP, ma
pensavo fosse applicabile):
 Using ZLIB1.DLL with gcc/MinGW
 ==============================
    1. Install the supplied header files "zlib.h" and "zconf.h"
       into the INCLUDE directory.
 
 
    2 Copy the supplied library file "zdll.lib" to "libzdll.a":
         cp lib/zdll.lib lib/libzdll.a
 
    3. Install "libzdll.a" into the LIB directory.
 
    4. Add "libzdll.a" to your project, or use the -lzdll option.
 
 
 
Io ho seguito le informazioni, ma al momento di chiamare una qualsiasi
delle funzioni (es. compress), il compilatore mi restituisce l'errore
undefined reference to `compress'
Insomma ho qualche problema a capire come si usano le librerie... ;-)
Grazie mille
Simone
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 
non è che ti sei dimenticato
#include <zlib.h>
-- 
Yum! E' anche meglio se usate la crema di formaggio invece del tofu. E
zucchero. Un sacco di zucchero. E uova e burro: non dimenticate il burro.
Jeffrey Zeldman - Designing with web standards

 #include <zlib.h>
No, purtroppo c'è!


 
con mingw funziona correttamente, no ti so dire!


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

sto cercano di finire un programma e vorrei implementare una funzione che mi
permetta di salvare un file dandogli un nome che è contenuto in una
variabile string o in un array di caratteri come posso fare?
vi prego aiutatemi.
la mia e-mail è 
red....@tiscalinet.it

 vi prego aiutatemi.
char NomeFile[] = "MyFile.txt"
FILE *Han = NULL;
Han = fopen( NomeFile,"w" );
fwrite(.........);
fclose(Han);
Ivan Molella
Newsgroup: it.comp.lang.c
Titolo: [Forse OT] Algoritmo di criptazione

Ciao a tutti,
chi di voi sa qualcosa dell'algoritmo di criptazione sviluppato e brevettato
da meganet (
www.meganet.com
 ) e del concorso che hanno messo su (l'ultimo
concorso regala una ferrari al santo che crackerà l'algoritmo in questione).
Mi sarebbe piaciuto (se non sono troppo ot) raccogliere info sull'argomento,
opinioni e soprattutto sapere: se esiste un programma che permette di
criptare un file... perche reversando il programma nessuno riesce a risalire
all'algoritmo?
Dome

 nico
Ah grazie!
Non capivo dove poter postare questa domanda!
Ciao, Dome

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


I'm not prejudiced, I hate everyone equally.

 con il 64 lascia vuoti 50 "posti" dell'array di puntatori, senza solo 22 ...
Questo punto mi e` davvero oscuro...
-- 
Baci,
Mony

 Mony
grazie 1000 per l'interessamento ;-))


ad usare sullo stesso file di input la stessa funzione senza il 64
L'hashing in se non vuol dire quasi niente, dipende da come lo
implementi (ci sono almeno una decina di metodi principali).
Teoricamente piu' e' grande il range in cui splitti i valori (i vari
slot che ti genera/no la/le funzione/i di hashing che usi) meglio e'
perche' non ci sono collisioni.
Purtroppo piu' e' grande il numero di slot che usi piu' hai spreco di
memoria. Migliore e' la funzione di hashing piu' splitti i valori.
Piu' veloce e' la funzione meno e' costoso risolvere i conflitti in
casi di hashing doppio.
Non esiste una soluzione migliore purtroppo, a meno che tu non sappia
esattamente quanti valori memorizzare e come verranno memorizzati e tu
usi l'hashing solo per ripescarli.
Una soluzione media (parlando di C standard) la trovi implementata
nelle Glib. Usano l'hashing lineare e risolvono i conflitti con una
lista. La tabella di hash puo' essere ridimensionata in automatico
quando i conflitti superano i 3 (a memoria mi pare 3, ma potrei
sbagliarmi o essere ridefinibile da utente) la struttura puo' (se
glielo permetti) ridimensionarsi.
Una trattazione migliore sull'hashing richiederebbe molto piu'
spazio... puoi guarda su qualche libro che parla di implementazione di
BDMS per ulteriori informazioni.
-- 
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: contatore di linee

Ho questo esercizio preso dal libro W.Kernighan M.Ritchie che in pratica e'
un contatore di linee ho provato ,ma non funziona.
Secondo me non  i riconosce la costante EOF, infatti
se digito una riga vuota mi richiede l'input cosa che no n dovrebbe fare in
quanto nel ciclo while non e' soddisfatta la condizione.
Anche se digito una riga di testo non viene visualizzata la printf.
int main(void)
{
int c,nl;
c=0;
while((c=getchar())!=EOF)
  if(c=='\n')
    nl++;
  printf(" %d\n",nl);
return(0);
}
Grazie

 in quanto nel ciclo while non e' soddisfatta la condizione.
Come ti richiede l'imput? Il tuo programma non stampa nessun prompt.
Ma tu sei sicuro di inviare EOF correttamente e non un altro segnale? 
Perche' se interrompi l'applicazione in altri modi non vedi l'output.
Piccolo ripasso su EOF
EOF e' una costante numerica che mi indica la fine di un file. Stdin punta 
ad un file speciale associato di default alla tastiera e come potrai 
immaginare non ha una fine come un normale file, ma resta sempre aperto 
(quindi non raggiunge mai EOF tranne 2 casi):
- con una ridirezione, in tal caso stdin puntera' ad un file classico, e 
  come tale EOF sara' restituito alla fine del file
- lanciando espressamente il segnale attraverso un'opportuna sequenza (sotto 
  una qualunque shell Unix CTRL-D) che simula l'invio di un EOF
Se tu lanciassi il segnale di interruzione (non ricordo mai se ABORT o QUIT) 
con CTRL-C l'applicazione si interromperebbe in modo brusco nel preciso 
punto in cui hai lanciato il segnale, quindi nel ciclo principale e non 
arrivera' mai alla printf (e se ci fosse arrivato ti saresti probabilmente 
accorto che nl non era inizializzata).
-- 
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."

Si hai ragione ho sbagliato ivece di inizializzare nl o inizializzato c che
non ne aveva bisogno.
Per quanto riguarda stdio.h quello cera e agiungo anche conio.h per usare la
funz getch(), in modo che non mi si chiuda il prompt.
Comunque il programma non funziona .
Da quello che ho capito il prog. si aspetta una riga in input(da stdin) e se
la riga e vuota il while non viene esegiuto.
La riga vuota e' il tasto invio senza scrivere niente, ma qui mi sorge
qualche dubbio, se io premo invio senza digitare niente questo mi
rappresenta EOF?
Secondo me no , ma quel controllo su EOF a cosa serve?
Non serve per non eseguire il corpo del while se in input non viene digitato
nulla?
A parte questo anche se scrivo delle linee il programma non mi visualizza
nessun output.
#include <stdio.h>
#include <conio.h>
int main(void)
{
int c,nl;
nl=0;
while((c=getchar())!=EOF)
  if(c=='\n')
    nl++;
  printf(" %d\n",nl);
getch();
return(0);
}
GRAZIE
 CIAO
Newsgroup: it.comp.lang.c
Titolo: gcc e c99

Salve a tutti, avevo provato a dichiarare una variabile nel ciclo for che la 
usa, cosi':
for(int i = 0; i < n; i++)
ottenendo l'errore del compilatore "'for' loop initial declaration used 
outside C99 mode". Leggendo in giro mi par di capire che bisogna 
esplicitamente attivare il modo c99 per poter scrivere quel pezzo di 
codice... ma qui:
http://en.wikipedia.org/wiki/C_(programming_language)#C99
tra le "new features" leggo che anche cose come i boolean e le macro 
variadiche sarebbero state aggiunte dal c99... ma io le sto tranquillamente 
usando nello stesso programma, senza aver mai attivato l'opzione c99!
Come si spiega?
Thx,
Pleg 

 usando nello stesso programma, senza aver mai attivato l'opzione c99!
Dipende dai flag del compilatore. Spesso i compilatori "non rompono le
palle" a meno che tu non glielo chieda esplicitamente. Io personalmente
quando sviluppo sto sempre in -W -Wall e spesso aggiungo pure -pedantic
e simili. Gli errori mi piace conoscerli ASAP. 
Se poi usare quella che per C89 è di fatto un'estensione è troppo
comodo, magari valuto se impipparmene e basta.
Diciamo che mi verrebbe pure da dire che piano piano pensare di scrivere
direttamente in C99 potrebbe essere una strada sensat, specie guardando
il futuro.
-- 
-riko

 il futuro.
Mi sembra un consiglio sensato; mi sai indicare qualche buona fonte/tutorial 
delle differenze del C99 coi piu' vecchi, per capire come modificare il mio 
codice? Dato che sto piu' o meno imparando tanto vale fare un passetto in 
piu' e metterci anche questo nel piano di studi :-)
Grazie,
Pleg 


Il gcc implementa di default delle estensioni che in seguito furono 
introdotte nel C99.  Se vuoi disabilitarle usa l'opzione '-ansi' che 
garantisce lo standard C90.
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   Registered Linux user #337974  < 
http://giovanni.homelinux.net/
 >

 piu' e metterci anche questo nel piano di studi :-)
Io posso dirti che ho lo standard C99. Ma non ti consiglierei di
studiarti quello.
L'articolo su wikipedia potrebbe essere un buon punto di partenza.
Ma cerca di evitare le cose più esoteriche. 
-- 
-riko

 cosette che rendono conto delle discrepanze di cui ho scritto prima.
In particolare, affidandoti al -pedantic vieni a capo di una buona parte
di errori logici nella tua applicazione.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 piu' e metterci anche questo nel piano di studi :-)
Il libro 'C: A reference manual' 5a edizione, di Harbison & Steele,
(ISBN 0-13-089592X) copre le differenze tra C99 e C90 ed e' una fonte
autorevole: e' praticamente lo standard, annotato. E' la mia bibbia.
http://www.careferencemanual.com/

Grazie a tutti!
Pleg

 autorevole: e' praticamente lo standard, annotato. E' la mia bibbia.
Interessante.
-- 
-riko