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

Salve,
qualcuno mi saprebbe dire se esiste un modo x creare un exe eseguibile x
Win
quindi senza la solita finestrina del prompt dei comandi?
Io x compilare uso lcc-win32...sono accetti anche consigli su un cambio
(motivato) di compilatore!
Grazie
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it



Che compilatore usi?
Comunque sei lo stesso zuf che sta su "TaLUG!"?
-- 
Quando noi ignoranti eravamo di più, tutto era più bello (A. Celentano).
  ___   _   ___ _  _______   _______ ___
|   \ /_\ | _ \ |/ / _ ) \ / /_   _| __|
| |) / _ \|   / ' <| _ \\ V /  | | | _|
|___/_/ \_\_|_\_|\_\___/ |_|   |_| |___|

 Comunque sei lo stesso zuf che sta su "TaLUG!"?
no, è la prima volta che lo uso...se è un probl x qlcuno mi avvisi che lo
cambio!


 
non e' che hai fatto un applicazione console?
ciao
-- 
-------------------------------
per scrivere in privato
togliere "1975nosp"
to reply remove "1975nosp"

 
che programma hai fatto? con una gui? se sě, quali toolkit hai usato? 
gtk, wx? o semplicemente le api di windows?

 cambio!
No no, tranquillo nessun problema.
Siccome conosco un amico che frequenta un forum di Linux di Taranto, mi 
chiedevo se non fossi tu :)
-- 
Quando noi ignoranti eravamo di piů, tutto era piů bello (A. Celentano).


 (motivato) di compilatore!
Chiedi su it.comp.os.programmare.win32 - ti sapranno sicuramente 
rispondere in modo piu' completo.
Qui si dovrebbe solo parlare di standard C (ma perche' non e' stato 
chiamato "it.comp.programmare.standard-c"?? :-D)
-- 
Mat/tia Belletti - Undergraduate student @ 
cs.unibo.it
ICQ: 33292311    - email: 
mbel...@cs.unibo.it
IRC: RedGlow     - site(s): 
http://mbellett.web.cs.unibo.it/
Jabber: RedGlow  - Linux registered user 299762 @ machine 213003

Newsgroup: it.comp.lang.c
Titolo: cattura video

salve,
vorrei sapere come si fa ad acquisire una carattere che e' presente in una
data zona dello schermo.
esiste un sistema per cui io possa catturare un parte di video e leggerla
come carattereri ?
uso il Borland 3.0 (dos).C/C++
grazie per l'attenzione

uso il Borland 3.0 (dos).C/C++
Devi creare un puntatore FAR (tramite la macro MK_FP) alla zona di memoria che
inizia dall'indirizzo 0xb800:0 e leggere il valore come "puntatore[y][x]".
La sintassi giusta, per il puntatore, dovrebbe essere :
unsigned char far (* matrice_video)[80] ;
Andrea Laforgia
-------------------------------------
(grattatio pallarum omnia mala fugit)
--
Posted from 
itaca.ulysse.it
 [195.223.254.1]
via Mailgate.ORG Server - 
http://www.mailgate.org

non hai per caso qualche codice sorgente di esempio,
Prova questo codice :
typedef unsigned char  byte ;
typedef struct { byte Carattere ;
		 byte Attributo ; } video_el_t ;
int main()
{
    video_el_t far * memory = (video_el_t far *) 0xb8000000;
    byte x, y ;
    for (x = 0 ; x <= 79 ; x++)
	for (y = 0 ; y <= 24 ; y++)
	{
	    memory[y*80+x].Carattere = 7 ;
	    memory[y*80+x].Attributo = x*y+15 ;
	}
    return 0 ;


grazie andrea,,
sembra funzionare

Newsgroup: it.comp.lang.c
Titolo: SCUSATE! domanda JURASSICA!!!

Problema:
Inserisci un numero > 0
se io inserisco 0 vorrei che il programma tornasse a rifarmi la domanda, ma
il massimo che riesco a fare è di farlo uscire
So che sto offendendo la vostra intelligenza ma io sono PROPRIO un
neo-studente di C
Grazie

 wrote in message 82pjbh$3t8$1...@nslave2.tin.it...


d'uscita cioe':
Niente affatto, (tasto != 0) non e' la condizione d'uscita, ma la
condizione di permanenza nel ciclo.
Stai confondendo con il repeat...until del pascal.
Se va richiesto un numero > 0, la condizione d'uscita e' esattamente
questa e quindi la condizione di permanenza l'esatto opposto.
#include <stdio.h>
main()
{
    int numero ;
    do 
    {
        printf( "inserisci un numero > 0 : " ) ;
        scanf( "&d", &numero ) ;
    } while ( numero <= 0 ) ;
    return 0 ;
} 
--
Andrea Laforgia
andrea_...@bigfoot.com

 wrote in message
387def0d...@diesel.cu.mi.it...


Newsgroup: it.comp.lang.c
Titolo: Array a due dimensioni

Salve a tutti; ho un dubbio sulla teoria degli array nato in seguito
ad una discussione con un amico.
Il mio amico ha realizzato un'array a due dimensioni per salvare 12
stringhe fisse; chiamiamo queste stringhe "stringa1", "stringa2",
"stringa3", etc fino a "stringa12" e l'array che le contiene colonne.
All'inizio del programma l'array viene popolato così:
strcpy(colonne[1],"stringa1");
strcpy(colonne[2],"stringa2");
..
strcpy(colonne[12],"stringa12");
E qui sorge l'inghippo. Come è possibile che il programma non sfondi?
non dovrebbe essere
strcpy(colonne[0],"stringa1");
..
strcpy(colonne[11],"stringa12");


Di sicuro non ne viene nulla di buono ;)
Scrivere oltre i bound di un'array è un undefined behaviour.
Dopo un UD il programma, da quel momento in poi, può fare quel che
vuole quando vuole: puoi essere fortunato e vederlo "funzionare" come
volevi, ma potrebbe anche cancellarti tutti i dati dal disco e
svuotarti il conto in banca. Meglio stare attenti a non sforare i
bounds degli array ;-)
Ciao!
Newsgroup: it.comp.lang.c
Titolo: Incominciare a programmare!

Saluto tutti e chiedo chi mi può dare dei link o delle informazioni per
incominciare a programmare da zero in C o C++. Grazie!

 scriveva: 
 K> Saluto tutti e chiedo chi mi può dare dei link o delle informazioni
 K> per incominciare a programmare da zero in C o C++. Grazie!
La richiesta è generica quanto basta per ottenere al più "google" come
risposta.
Calcolato che questo è iclc, sei pure per metà OT :)
Io sto studiando il C con il Deitel&Deitel. Finito quello leggerò Il
Kernighan&Ritchie. Poi gapil e da lì, via verso la programmazione di
rete in ambiente *nix.
Credo che ognuno debba scegliersi una *propria* via: scegli un editor,
un testo di riferimento e parti.
-- 
lg, You Will Be Assimilated. You Love Gnus.
Newsgroup: it.comp.lang.c
Titolo: Cosa significa questa riga?

typedef struct xyz xyz;
--------------------------------
Inviato via 
http://usenet.iol.it

typedef struct xyz xyz;
che i dati del tipo struct xyz possono essere dichiarati soltanto
tramite xyz;
Antonio

 typedef struct xyz xyz;
se scrivi:
     struct complex {
         double real, imag;
     };
definisci un nuovo tipo di dato strutturato.
Il suo uso pero` e` "scomodo", perche` per dichiarare un oggetto
del tuo tipo sei costretto ad anteporre la paorla chiave struct:
    struct complex a, b;
Utilizzando invece
     typedef struct {
         double real, double imag;
     } complex;
definisci prima un nuovo dato strutturato (anonimo), e poi (grazie
all'uso di typedef) assegni il nome `complex' al tuo nuovo tipo di
dato. Ora la dichiarazione e` piu` comoda:
     complex a, b;
Se pero` devi riferirti al nome della struttura all'interno della
struttura stessa, e non vuoi rinunciare alla comodita` del typedef,
devi utilizzare un piccolo artificio:
     typedef struct TAG_NODO {
         int dato;
         TAG_NODO* succ;
     } nodo;
Se si "ricicla" lo stesso nome sia per lo struct che per il nuovo
tipo, si ottiene il tuo stesso esempio.
Tutto chiaro?
-- 
Danilo Piazzalunga
Linux Registered User #245762 at 
http://counter.li.org
mailto:
leo-...@ibero.it

          TAG_NODO* succ;
Non va bene, deve essere:
    struct TAG_NODO *succ;  
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

tramite xyz;
????
significa che tu da qualche parte hai definito una struct xyz, non ti
interessa come.
Per dichiarare una variabile di tipo struct xyz dovresti fare:
struct xyz a,b,c;
Se fai un typedef come quello riportato puoi semplicemente dichiarare:
xyz a,b,c;
Piu' corta e piu' immediata (e in alcuni casi particolari enormemente
piu' comprensibile, pensa al caso di puntatori a funzioni) :)
Mox

typedef struct TAG_NODO 
{         
   int dato;         
   struct
TAG_NODO* succ;     
} TAG_NODO;
credo intendevi questo...
pero' nel
mio esempio, c'e' una struttura priva di membri...
come se fosse scritto
typedef struct tagnodo tagnodo;

Newsgroup: it.comp.lang.c
Titolo: stringhe

ho il borland 3.1 e quando diciarato una stringa come
char s[20];
non riesco ad "programmala" con la classica sintassi
s= "caio";
ma bensì devo scrivere
strcpy(s,"ciao);
Perchè???
qualcuno mi piò rispondere??
                                                        SERGIO

 qualcuno mi piò rispondere??
Perche' queste sono le specifiche del linguaggio.  Se a te non piacciono,
puoi sempre usarne un altro...  magari il C++, dove il tipo builtin
"string" ha un assignment operator gia' definito opportunamente.
-- 
Maurizio Loreti                      
http://wwwcdf.pd.infn.it/~loreti/mlo.html
Un. of Padova, Dept. of Physics - Padova, Italy          
lor...@padova.infn.it

... 's' e' un lvalue non modificabile
????

lupo...@mindspring.com
 (Lupo Buono) writes:

Detto in breve e semplificando, gli "lvalues" sono le entita'
associate ad un indirizzo in memoria; 
p.es
., la dichiarazione "int a;"
associa il nome simbolico "a" all'inizio di una porzione di memoria
che possa contenere una variabile di tipo "int": e quindi "a" e' un
lvalue.  Ovviamente l'oggetto di un assignment operator (=) DEVE
essere un lvalue, in quanto un assignment deposita un valore nella
memoria.
I nomi degli arrays sono lvalues, ma con una particolarita': non sono
modificabili.  La dichiarazione "int a[10];" associa il nome simbolico
"a" all'inizio di una porzione di memoria in grado di ospitare
almeno[*] 10 variabili consecutive di tipo int.  "a" non puo' essere
mutato in modo da essere associato ad un altro indirizzo, ovvero non
puo' essere oggetto di un assignment, ovvero e' un lvalue non
modificabile.
Tutto questo e' spiegato, in ben maggiore dettaglio, in qualunque
manuale decente del linguaggio (ad es. il K&R2[#]); se vuoi i
particolari, sono nei capitoli 6.2 e 6,3 dello standard ANSI/ISO.  Il
tutto e' menzionato anche nelle faq di comp.lang.c[+] ai punti 3.16,
6.3 e 6.7 .
Note:
[*] Nel caso di un array di int, normalmente non ci sono aggiunte; nel
    caso di arrays di strutture, ad esempio, puo' esserci padding.  Lo
    standard garantisce che il sizeof dell'array e' non inferiore al
    prodotto del numero di elementi per il sizeof di ognuno.
[#] Brian W. Kernighan and Dennis M. Ritchie - The C programming
    language, seconda edizione (Prentice-Hall 1988) - ISBN 0-13-110370-9.
[+] Anonymous ftp da 
RTFM.mit.edu
 , directory pub/usenet/comp.lang.c/ .

Newsgroup: it.comp.lang.c
Titolo: Problemi sull'append

Devo scrivere un file con l'append dei dati. Se uso il comando:
  fd = open("tmp.txt", O_WRONLY|O_APPEND|O_CREAT, 0644);
il file mi viene comunque sovrascritto. Perché?

   fd = open("tmp.txt", O_WRONLY|O_APPEND|O_CREAT, 0644);
                         ^^^^^^^^^^^^^^^^^^^^^^^^^
Ce ne va una sola di quelle opzioni!!
Metti solo O_APPEND


perché mai? quei flag si possono combinare benissimo.
ciao



Ciao,
 concordo con cane.
Sillaba atona, ci posti un po' piu' del tuo codice? Su che sistema 
operativo lavori?
 Ciao
 Federico

if (0 == pid) {                                        close(1);
     fileopen=open(output, O_CREAT|O_TRUNC|O_APPEND|O_WRONLY, 0644);
     execv(line, argomenti);
     perror("exec failed!");
     exit(EXIT_FAILURE);
} else {                                         pid = wait(&status);
     close(fileopen);
}
Lavoro su Red Hat, ma ora sto facendo le prove con cygwin. Si tratta 
comunque di Posix C.
Secondo me quello che fa casino è O_TRUNC.


 Secondo me quello che fa casino è O_TRUNC.
mi sa di si:
O_TRUNC: If the file exists, its length is truncated to 0. 
The file attributes remain unchanged.
ciao.

 Secondo me quello che fa casino è O_TRUNC.
Ciao,
 da dove e' saltata fuori? Nel tuo primo post non c'era!!
Concordo con te e con cane che quello e' il problema!
 Ciao
 Federico
Newsgroup: it.comp.lang.c
Titolo: iclude file .h salvate nella stessa directory

salve a tutti,
siano A.h e B.h due file di firma; siano A e B due file dello stesso
path, salvati quindi nella stessa directory; se B usa una struct
dichiarata ed implementata in A, occorre che B includa A? devo fare:
#include <A.h>   ?
oppure non serve?
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 
No, devi fare
#include "A.h"
le parentesi angolate dicono al preprocessore di cercare l'header nei 
path standard del sistema operativo, con le "" gli dici invece di 
cercare nella dir corrente.
Saluti, Alberto
Newsgroup: it.comp.lang.c
Titolo: scanf e strcmp

Salve,
  char s[4];
  count = scanf("%4c", s);
  if (count == 1)
    strcmp("ABCD", s);
Visto che il terminatore '\0' non c'e` in s, come si comporterebbe
strcmp in questo caso?
Cambierebbe qualcosa se faccessi strcmp(s, "ABCD")?
La mia paura e` che strcmp tenti di accedere a s[4] cioe` oltre
l'ultimo previsto.

 l'ultimo previsto.
Un array di caratteri è una "cosa" fondamentalmente diversa da ciò che si
considera "stringa", in C.  Una stringa, in C, è una array di caratteri,
il cui ultimo carattere è '\0' (ciò che viene comunemente chiamata una
stringa ASCIIZ).  Le funzioni che lavorano su stringhe, quindi, si
aspettano che i parametri seguano questa convenzione.  Nel tuo caso, stai
confrontando "oggetti" incompatibili tra loro, perché uno è una stringa C
e l'altro no.
Invertendo l'ordine non cambia nulla.  La funzione, in questo caso,
scorrerebbe l'array, sforandolo, alla ricerca del terminatore nullo e
generando, probabilmente (perché non è detto che lo faccia), un
segmentation fault.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Newsgroup: it.comp.lang.c
Titolo: cerco quick ver. 2.5

qualcuno mi puo aiutare?

qualcuno mi puo aiutare?
Stai parlando del "quick C" della Microsoft?

Newsgroup: it.comp.lang.c
Titolo: 3 righe

Chi mi spiega queste 3 righe di codice ???
/*  
jha...@world.std.com
 */                              /* Joseph H. Allen */
int a[1817];main(z,p,q,r){for(p=80;q+p-80;p-=2*a[p])for(z=9;z--;)q=3&(r=time(0)
+r*57)/7,q=q?q-1?q-2?1-p%79?-1:0:p%79-77?1:0:p<1659?79:0:p>158?-79:0,q?!a[p+q*2
]?a[p+=a[p+=q]=q]=q:0:0;for(;q++-1817;)printf(q%79?"%c":"%c\n"," #"[!a[q-1]]);}
Joseph H. Allen č l' autore di Joe.
P.S.
Vediamo se riusce a farlo senza provarle...
-- 
d@NIE`
email:       togli quello che c'č da togliere dall' indirizzo
home page:   
http://www.agora.stm.it/A.Rollo/

Vediamo se riusce a farlo senza provarle...
No, e allora?
Ciao Luciano

Newsgroup: it.comp.lang.c
Titolo: intercettare control-c

Avrei bisogno che, solo all'interno di un blocco di codice, la pressione 
di control-c non provochi l'uscita dal programma, ma venga trattato come 
un tasto qualsiasi, come da schema seguente:
1) impedire che control-c produca l'uscita dal programma
2) esecuzione di alcune righe di codice
3) ripristinare la situazione di default per quanto riguarda control-c
Si può ottenere in qualche modo 1) e 3) in C su un sistema linux?

Marco ha scritto:

Sì, guarda <signal.h>. Devi intercettare SIGTERM e ignorarlo.
E.

 
   signal(SIGINT,SIG_IGN);
   //codice punto 2
   signal(SIGINT,SIG_DFL);
Giusto?

 Si può ottenere in qualche modo 1) e 3) in C su un sistema linux?
Se fossi in te indagherei su trap (bash shell scripting) ti si
aprira' una finestra su cio' che stai cercando.
Newsgroup: it.comp.lang.c
Titolo: AIUTO TURBO C++

Ciao a tutti,
uso da tempo TURBO C++ PER WINDOWS 3.1 con molta soddisfazione, ma da
quando ho installato Windows95 non sono più in grado di lanciare il
Turbo Debugger (programma DOS like). Il messaggio che ricevo è:
                 "Can't load C:\...\BIN\tdwin.dll"
naturalmente tale file è regolarmente presente nella directory e la PATH
nell'autoexec.bat è correttamente settata.
Lanciando l'applicazione direttamente (da gestione risorse) si ottiene
un messaggio che mi avverte che la suddetta applicazione potrebbe essere
instabile con Windows95 e quindi è consigliabile contattare l'assistenza
tecnica. Potete aiutarmi?
Vi sarei grato se mi rispondete anche sulla mia email.
Grazie.
-- 
Andrea Renzi
are...@iname.com

...


Newsgroup: it.comp.lang.c
Titolo: OUTPUT INCOLONNATO

Ragazzi sono sempre io, questa volta ho un problema di output.
Questa qui sotto e' la parte finale di un prog. che mi calcola la matrice
somma tra m1 e m2.
Il prog. funziona corettamente ma l'output me lo da' su di un unica riga
anziche' 3:
es.
Facendo la somma tra
1 2 3                1 2 3
4 5 6         e     4 5 6
7 8 9                7 8 9
mi da'  2 4 6 8 10 12 14 16 18    anziche'
2  4  6
8 10 12
14 16 18
Cosa posso fare per ovviare a questo inconveniente?
Aiutatemi, sono alle prime armi!
Grazie.
******
printf("\n La matrice somma e'\n");
 for(i=0; i<N; ++i)
    for(j=0; j<N; ++j)
       printf("%d ",m1[i][j]+m2[i][j]);
******


Infatti non vai a capo tra una riga ed un altra
prova cosi
 printf("\n La matrice somma e'\n");
 for(i=0; i<N; ++i) {
    for(j=0; j<N; ++j) {
       printf("%d ",m1[i][j]+m2[i][j]);
    }
    printf("\n");  /* puo' essere fatto in 100 modi diversi */
 }

 Grazie.
 
 ******
 printf("\n La matrice somma e'\n");
  for(i=0; i<N; ++i) {
     for(j=0; j<N; ++j)
        printf("%d ",m1[i][j]+m2[i][j]);
     putchar('\n');
  }
 ******
Cosi' dovrebbe andare bene, non l'ho provato, facci sapere...
--
 Ciao, Luca.
 Reply to 
luca....@tiscalinet.it

        printf("%d ",m1[i][j]+m2[i][j]);
printf("\n La matrice somma e'\n");
 for(i=0; i<N; ++i)
 {
    for(j=0; j<N; ++j)
       printf("%d ",m1[i][j]+m2[i][j]);
    printf("\n");
 }
EMG
Newsgroup: it.comp.lang.c
Titolo: programmazione C

Vorrei realizzare un programmino per il super enalotto,dovrebbe
visualizzarmi in maniera casuale sei numeri da 1 a 90 con la pressione
di un qualsiasi tasto, con la condizione che la scelta casuale delle
colonne deve esclude a priori le colonne già uscite che devono essere
aggiornate settimanalmente.Purtroppo sono ancora un neofita e non so
come (o meglio mi mancano le basi ) per impostare la programmazione.Chi
di voi è così gentile da darmi una mano?
Io vi ringrazio anticipatamente e aspetto una vostra
risposta.Grazie.....
Rocco.

 aggiornate settimanalmente.
xchè?

Che senso ha giocare una colonna già uscita? Sono 800 lire buttate.
Alberto Gori ha scritto:


 Che senso ha giocare una colonna già uscita? Sono 800 lire buttate.
Non e' assolutamente vero: dal punto di vista statistico, esiste
esattamente la stessa probabilita' che esca una colonna gia' uscita o
una mai uscita.
-- 
Fabio Costa a.k.a. Ph0ton
--------------------------------------------------------------------
  Referente AGI - Sezione di Milano   Impaginatore capo di AmiWorld 
  Membro del MusicPlanet Musicgroup       (
http://amiga.eden.it
)    
     (
games.eden.it/musicplanet
)           Musician dei Genesis     
--------------------------------------------------------------------



Aiutami sulla programmazione!


Fabio Costa ha scritto:



> Aiutami sulla programmazione!
Non postare in formato html...
Per estrarre numeri casualmente, guarda nelle FAQ su 
www.programmazione.it
Ti serve un file dove memorizzi le colonne già uscite... e poi controllare
se sono già usciti è una banalità.
Cmq come diceva Fabio Costa... non ha senso il tuo metodo.
Gioca piuttosto a Black Jack o alla Roulette... sono soldi persi meglio ;-))
--
______________________________
Per rispondere Brain(a)
infinito.it
La mia homepage 
www.infinito.it/utenti/brain
....work in progress....
bye Brain





 Un modo per risolvere il problema è il 
seguente ;


1) crea una lista dinamica contenente le colonne 
uscite


2) for 1 to 6


2.1) genera il j-esimo numero casuale 



3) per ogni colonna vedi se il numero è uscito 
nella posizione J


4) se il numero non è uscito passa a 2


5) altrimenti passa a 2.1.


per come creare la lista dinamica ti dei 
documentare
Newsgroup: it.comp.lang.c
Titolo: add_node non va! :(

Salve ragazzi, ho dei problemi con la funzione add_node. 
/*legge dallo stdio un valore e il numero dei figli, in base al numero dei figli "attacca"
il/i nodi all' albero...*/
void add_node(ALBERO* *rootTree, int value, int child){
 
	ALBERO *nodeTmp =NULL;//Nodo tmp.
 
	nodeTmp = malloc(sizeof(ALBERO));
	if(!nodeTmp){
		printf("Errore Memoria non disponibile.\n");
		exit(1);
	}
	else{	//Memoria allocata.
		nodeTmp->valore = value;
		nodeTmp->sx = NULL;
		nodeTmp->dx = NULL;
	}
	*rootTree = nodeTmp;
	if(child > 0){
		printf("Inserire il valore del nodo e il numero dei figli: "); 
		scanf("%d %d", &value, &child);
		add_node(&(nodeTmp->sx),value,child);
	}	
	if(child > 1){
		printf("Inserire il valore del nodo e il numero dei figli: "); 
		scanf("%d %d", &value, &child);
		add_node(&(nodeTmp->dx),value,child);
	}
}
Ho dei problemi a run-time, ovvero non riesco a mantenere il valore di child!
Qualche idea??
Grazie in anticipo a tutto il ng.

 Qualche idea??
quale valore di child vuoi mantenere? Quello che hai passato tu, quello
che hai letto con scanf...
C:\>iao Angelo
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 che hai letto con scanf...
Il mio programma deve prendere in input un valore, che memorizza nel nodo e
il numero dei figli che quel nodo ha! (max 2)
Se il nodo ha 1 solo figlio attacca a sx se invece sono 2 attacca a sx e dx,
cosi ricorsivamente....spero di essere stato un pò + chiaro.
Avevo pensato ad una soluzione ricorsiva ma non ho capito bene come fare.

 Avevo pensato ad una soluzione ricorsiva ma non ho capito bene come fare.
C'e' un esempio su K&R II a pag. 180 (o giu' di li)
Il problema che lamenti e' dovuto al fatto che alla scanf passi l'indirizzo
dei parametri della funzione _QUESTO PROVOCA SOLO CASINO_ in generale e
in questo caso in particolare.
Quando chiami add_node passandogli 2 come valore di child questo viene
messo sullo stack e viene passato alla funzione.
Visto che 2 e' maggiore di zero e anche di 1, i due if() sono soddisfatti
pertanto dovrebbero essere eseguiti i due blocchi di codice a loro
associati.
Supponiamo che quando si esegue il blocco associato a if(child > 0)
la scanf legga (ad es.) 25 0
L'esecuzione di scanf MODIFICA IL VALORE DI CHILD PASSATO ALLA FUNZIONE
e per questo motivo il blocco associato a if(child > 1) NON VIENE PIU'
ESEGUITO contrariamente alle intenzioni del chiamante la funzione.
HTH.


Newsgroup: it.comp.lang.c
Titolo: Dove trovo un compilatore C?

Dove posso trovare un compilatore C per DOS / Win95?
Grazie, Red.

Ciao,
    se vai nella sezione Linguaggi di 
www.programmazione.it
 , area C/C++ e
clicchi su "strumenti" trovi le istruzioni per scaricare compilatori sia Dos
che Win32.
A presto :-)
Marco Abis
http://www.programmazione.it
  il sito Italiano di riferimento per IT
ab...@programmazione.it

 Dove posso trovare un compilatore C per DOS / Win95?
Prendi il DJGPP all'indirizzo 
http://www.delorie.com/djgpp/
.
EMG
Newsgroup: it.comp.lang.c
Titolo: lettura file

Scusatemi se vi rompo ancora, ma hodei problemi  a far funzionare il mio
programma di lettura dei file.
Quello che il programma deve fare, è leggere un file dove vi sono scritti le
stringhe di altri file.
esempio, il file lista ha:   primo\n
                             secondo\n
                             terzo EOF
quindi andrà a leggere il file primo, qui farà delle operazioni di
minuscolizzazione, e scriverà le parole trovate su un file output.
il mio problema è che, una volta letto il primo file, non riesco a fargli
prendere (e quindi scrivere) il file secondo, e così via.
Cosa cavolo posso fare per permettere tutto ciò???
Scusatemi se sono dei programmi verametne stupidi, ma se non sbaglio
ora.......
Grazie!
Andrea
Questo è il programma:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define MAX 20
int getWord(FILE *fp,char *word);
void tokenize(FILE *inputFile,FILE *outputFile);
void trasformazione(FILE *,char *,FILE *);
int main(){
char c;
FILE *lista,*file_lista,*appoggio;
char word[MAX];
        printf("sing: provo ad aprire il file\n");
        lista=fopen("corpus.txt","r");
                //printf("non posso aprire il file copus.txt");
file_lista=fopen("output.txt","w");
        int i=0;
    while((c =getc(lista)) !=EOF) {
    if (c=='\n') {appoggio=fopen(word,"r");
                if (appoggio==NULL)
                {
                  printf("ERRORE\n");}
                 // while((appoggio)!='\0')
                        tokenize(appoggio,file_lista);
//}
                fclose(appoggio);
*word=0;  /* qui credo di dover svuotare il vettore per permettere di
                leggere un file in modo pulito...ma come posso fare?*/
    }
else{
    word[i]=c;
    i++;}
    }
                        fclose(lista);
                        fclose(file_lista);
                        }
      int getWord(FILE *fp, char *word){
      char currentchar;
       do{
        currentchar=fgetc(fp);
       currentchar=tolower(currentchar);
       *word++=currentchar;
       }while((currentchar)!=EOF);
       *word='\n';
     return strlen(word);
   }
void tokenize(FILE *inputFile, FILE *outputFile){
        char line[MAX];
        getWord(inputFile,line);
                fputs(line,outputFile);

Andrea wrote:
Sono riuscito a risolvere il problema, grazie a chi mi voleva rispondere
 (se c'erano persone..ehehehehhe).
Ciao
Andrea
Newsgroup: it.comp.lang.c
Titolo: Salvataggio su file...

Ciao a tutti!
E' da un po' che non vi scrivo ;)
Attualmente mi sto dedicando alla programmazione in c sotto linux, 
volevo porvi una domanda...
In pratica devo salvare su file il contenuto di una lista la cui 
struttura base e' del tipo
typedef struct _allenamento {
   time_t data;
   gint km;
   gchar commento[40];
   gchar luogo[40];
} allenamento;
Volevo chiedervi quale puo' essere un modo furbo per eseguire tale 
operazione....uso le librerie standard del c eseguendo una fprintf per 
ogni campo, oppure uso le syscall open/write messe a disposizione dal 
kernel oppure c'e' un'altro modo piu' elegante e furbo? Voi come lo fareste?
Ciao e grazie 1000
Aragorn

 kernel oppure c'e' un'altro modo piu' elegante e furbo? Voi come lo
fareste?
Potendo č meglio usare librerie standard.
E poi mi sembra che in base ai campi che ci mostri vada bene
sicuramente un formato testo con fprintf.
Non devi usare una fprintf per ogni campo ma basta per ogni item
di tipo "allenamento".
Certo con il formato binario, e fwrite, potresti risparmiare spazio
ma non mi sembra rilevante in questo caso.
--
Giorgio Silvestri

 di tipo "allenamento".
quest'ultimo pezzo mi e' un po' oscuro ;) Come lo posso fare?
Grazie 1000 per l'aiuto
Aragorn


Volevo dire che se hai una struttura di tipo
typedef struct {
    int a;
    int b;
    double c;
    char nome[50];
} Tipo;
Tipo var;
o qualcosa del genere basta fare:
fprintf(fp,"%d %d %f %s\n",var.a,var.b,var.c,var.nome);
con fp opportunamante inizializzato con fopen().
cioč con un colpo solo stampi tutto l'item.
--
Giorgio Silvestri

 cioè con un colpo solo stampi tutto l'item.
Perfetto, grazie 1000 per i consigli!
Aragorn
Newsgroup: it.comp.lang.c
Titolo: Immagine di bkg di una finsetra

Salve.
Qual'è la funzione per inserire un'immagine in background in una
finsetra? E qual'è quella per caricare l'immagine stessa?
Ciao e grazie.
Giacomo

Scusate , ho sbagliato NG.
Giacomo

Newsgroup: it.comp.lang.c
Titolo: DIMENSIONE TIPI C

Il mio problema è questo: vorrei fare un programma che lavora su
interi di 32 bit. Se la dimensione dei tipi varia da architettura ad
architettura, come posso essere sicuro che "int" occuperà sempre 4
byte? magari in alcune vecchie macchine occupa 2 byte invece che 4.
Oppure int occupa 2 e long occupa 4, a quel punto il mio programma non
funzionerà lo stesso. Allora qualcuno potrebbe dire, usa long per
sicurezza, ma siamo sempre allo stesso punto: long occupa sempre 4
byte? Grazie in anticipo per la risposta.
Davide

 byte? Grazie in anticipo per la risposta.
Un long occupa *almeno* 32bit. Su macchine a 64 bit tipicamente è a
64 bit.
Luca
-- 
I went to God just to see
And I was looking at me
Saw heaven and hell were lies
When I'm God everyone dies

A parte quello che ha gia' detto Kronos,
tieni conto che stai usando una caratteristica
non portabile (almeno prima del C99, che non conosco a fondo),
in quanto il C richiede al compilatore solo che certi tipi
di dato siano specificati con almeno tot bit e non con esattamente tot bit.
Quindi ottenere qualcosa di assolutamente portabile
e' piuttosto difficile (magari esiste una macchina sulla quale
tutti i tipi di dato intero sono a 64 bit)
Una semplificazione possibile deriva dal fatto che su ogni compilatore
ragionevole il long ha *almeno* 32 bit.
Quindi usando il long sai di avere sempre almeno 32 bit su cui
lavorare.
Piu' in generale, penso tu possa sfruttare uno degli header,
mi sembra limits.h che dovrebbe contenere dei valori
tipo il massimo int, il massimo long, etc.etc.
Usando opportunamente quei valori e delle #if e dei #define
puoi definirti un tuo tipo di int che abbia sempre 32 bit, se possibile,
o comunque almeno 32 bit, o fare in modo che la compilazione
si interrompa con un errore se proprio questo non e' possibile.
ciao,
g.


Ciao
-- 
Cybertoldo
Per rispondermi via email, sostituisci moc.liamg con 
gmail.com
Newsgroup: it.comp.lang.c
Titolo: Funzione if con char

Ciao a tutti!
Ho un problema che non mi da pace, sicuramente è una cosa
facilissima...o almeno spero:
CODICE:
....
char help[1];
printf(" inserisci il dato");
scanf("%s", &help);
				if(help == 'H' || help == 'h')
				{
					.........
				}
Ora mi chiedo perchè non funziona??
Se metto if(help == "H" || help == "h") il programma parte ma non entra
nell'if quando inserisco H o h...
Grazie anticipatamente
Marco Angelini.

 if(help == 'H' || help == 'h')
stai usando l'idirizzo invece del dato.
sostituisci con:
if(help[0] == 'H' || help[0] == 'h')
o
if(*help == 'H' || *help == 'h')
ciao.

poi perché usare char help[1] ?
non è meglio semplicemente char help?
a quel punto va bene:
if(help == 'H' || help == 'h')
ciao.

Ti ringrazio...ho messo help[1] perchè non sono ancora molto
pratico...in più avevo altre due variabili char del tipo:
dato_x[1]
dato_y[1]
dove vado a mettere delle coordinate che se non sono numeri causa un
errore se no:
riga=atoi(dato_x)
colonna=atoi(dato_y)
e se non metto la lunghezza del dato char, non mi funziona atoi!!
O sbaglio anche qui??

 O sbaglio anche qui??
non č molto chiaro. se i valori di dato_x e dato_y li immetti da 
tastiera, puoi usare ancora scanf:
    int dato_x, dato_y;
    scanf("%d %d", &x,&y);
ciao.

 e se non metto la lunghezza del dato char, non mi funziona atoi!!
"la lunghezza del dato char"?? Temo ci siano alcune cosine che ti devi
ripassare.
Se scrivi:
   char a;
'a' è una variabile di tipo 'char'.
Se scrivi:
   char a[ 1 ];
'a' è una variabile di tipo 'array di 1 char'.
Una variabile di questo tipo in determinati contesti viene convertita
implicitamente in puntatore a char (char*). Questo avviene, ad esempio,
quando essa viene specificata come argomento della funzione 'atoi'.
'atoi', tuttavia, si aspetta un puntatore ad una sequenza di char chiusa da
un null ('\0'). Tale condizione non è però soddisfatta dalle variabili che
hai dichiarato, a meno che esse non contengano un singolo null.
Max
Newsgroup: it.comp.lang.c
Titolo: Leggere testo e-mail in C

Salve a tutti!
Sono nuovo di qua e di certo non sono un esperto programmatore, chiedo
venia :)
Ho un problema che spero possiate risolvere, mi fareste un grande
piacere: attualmente sto lavorando su una libreria client Pop3 open
source, libspopc forse la conoscete... Tutto fila liscio solo che
avrei bisogno di una qualche libreria esterna o di un qualcosa, che mi
faccia leggere le email senza che mi appaiano tutte quelle fastidiose
parentesi dovute all'HTML: esiste una libreria in C che faccia quanto
scritto sopra?

 scritto sopra?
A quali parentesi ti riferisci? Come mai le tue email contengono HTML?
E.

 Puppets"]
Si esatto sono proprio quelle...
C'è un qualcosa per ottenere il testo pulito?

 C'è un qualcosa per ottenere il testo pulito?
Come temevo la domanda è mal posta, non c'entra con le email ma con 
l'HTML. Per estrarre il testo da un file HTML puoi usare una libreria 
XML. Per esempio cerca informazioni su libXML.
E.

Newsgroup: it.comp.lang.c
Titolo: visualizzare ********* al codice e...

Salve a tutti.
Sto scrivendo un programma in cui, a un certo punto, viene chiesto di
in-
serire il codice. Il codice viene acquisito mediante una banalissima
scanf("%d",&codice);
Il problema è che non voglio visualizzare il codice mentre lo digito,
al suo posto vorrei per esempio visualizzare i caratteri ********...
Un po' come facciamo tutti quando nella connessione ad Accesso
Remoto inseriamo la password.
Esiste una maniera? (credo di no comunque).
Poi vorrei sottoporvi un secondo problema...
Osservate attentamente questo pezzo di programma:
printf("Introduci un numero grande");
scanf("%ld",&big);
Ebbene questo programma lavora correttamente con i double,
ma con i long double non funziona (ho controllato col debug).
Ma perchè?
Chi mi può aiutare?
--
Posted from 
mta03-acc.tin.it
 [212.216.176.34]
via Mailgate.ORG Server - 
http://www.mailgate.org

 ma con i long double non funziona (ho controllato col debug).
%d e' un formato di lettura di long *INT*; "d" sta per "decimal".
Per i double si usa %f, ed i long double non sono contemplati dallo
standard: lettura e scrittura sono implementation defined.
-- 
Maurizio Loreti                      
http://wwwcdf.pd.infn.it/~loreti/mlo.html
Un. of Padova, Dept. of Physics - Padova, Italy          
lor...@padova.infn.it


Dovrebbe essere scanf("%lf",&big) per i double e scanf("%Lf", &big) per i
long double

 Per i double si usa %f, ed i long double non sono contemplati dallo
Oops... sbagliato.   In lettura, %lf.  Scusa.


 writes:
E scusa di nuovo: ho sbagliato anche per i long double.  Ecco cosa
succede a citare a memoria senza guardare...  E' "%Lf".  Mea culpa
etc...


 Ma perchè?
Per i double devi utilizzare lo specificatore di formato %lf e non %ld.
Il tipo long double non fa parte dello standard. Ad esempio è
implementato nel GCC (DJGPP) e richiede lo specificatore %Lf.
EMG
Newsgroup: it.comp.lang.c
Titolo: Applicazione a console Win32

Vi chiedo scusa per l'enorme ignoranza in materia, ma poichè mi sono da
pochissimo avvicinata alla programmazione in C, se non risolvo questi 2
problemi sono fritta percgè non riesco ad andare avanti!
Problema 1) Se tento di lanciare un file .exe creato con Borland C++ come
applicazione a Console, anche il tipico programmino che visualizza la
scritta "Ciao" sullo schermo, il computer mi dice che è impossibile eseguire
l'applicazione perchè non trova il file CC3250.DLL. Questo non accade se
lancio il programma da Borland, ma se lo lancio normalmente da Windows.
Probabilmente succede perchè uso WIN98, comunque vorrei sapere come ovviare.
Problema 2)Quando eseguo il file da Borland, la finestra Dos, si chiude in
un istante, senza darmi neppure il tempo di vedere cosa è uscito scritto! So
che c'è un modo per evitare questo, ma non so qual'è!
Ancora scusa per il disturbo. Grazie
Giovanna


Alla tua prima domanda non so cosa rispondere, ma per evitare che la
finestra con l'output si chiuda immediatamente puoi semplicemente inserire
un getch() prima della fine del programma, oppure la istruzione.
Con questa istruzione (funzione) il programma attenderà la pressione di un
tasto prima di continuare.
Ciao ciao :-)
estr...@libero.it
estr...@tiscalinet.it
http://web.tiscalinet.it/tempo_libero/index.html

un getch() prima della fine del programma
rocordati di includere conio.h...
( #include <conio.h> )
ciao
Bun]{er
-> Home: 
http://bunkersite.cjb.net
-> E-mail: scorp...@NOSPAMtin.it

 che c'è un modo per evitare questo, ma non so qual'è!
Prova ad aprire un prompt di Dos e da li' eseguire il tuo programma,
invece di lanciarlo, come penso tu faccia, da Gestione Risorse,
cliccandoci sopra.
-- 
 Ciao, Bianco.
 Reply to luca.bianco (at) 
tiscalinet.it
Newsgroup: it.comp.lang.c
Titolo: numero di bit

per sapere esattamente il numero di bit degli unsigned long
(indipendentemente dall'elaboratore) come si dovrebbe fare? 
Potrei dire che
 nbits=CHAR_BIT*sizeof(unsigned long); ?
Saluti

 nbits=CHAR_BIT*sizeof(unsigned long); ?
non puoi semplicemente fare
numero_bit_ulong = sizeof(unsigned long int) / 8;
?
--
Lawrence Oluyede
rhy...@myself.com

 numero_bit_ulong = sizeof(unsigned long int) / 8;
Altamente improbabile che funzioni...
-- 
Baci,
Mony

Altamente improbabile che funzioni...
e per quale motivo?
--
Lawrence Oluyede
rhy...@myself.com

 e per quale motivo?
Perche` l'operatore sizeof ritorna il numero di byte occupati dal tipo 
argomento. Di certo, se dividi questo numero per otto, non ottieni i 
bit. Anzi, se lo assegni ad un intero, non otterrai altro che uno zero 
o, al massimo, un uno... ;)
-- 
Baci,
Mony

Piu che altro, non sarebbe
int bits = sizeof(unsigned long int)*8;
?

?
Non e' scritto da nessuna parte che il byte sia di 8 bit... e' scritto
che deve essere ALMENO di 8 bit :)  La macro CHAR_BIT definita in
limits.h serve apposta.
Il metodo originale di Jk dovrebbe funzionare.
-- 
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."

o, al massimo, un uno... ;)
ah ah non mi ero nemmeno accorto :9 ovviamente non / ma *
--
Lawrence Oluyede
rhy...@myself.com

 Il metodo originale di Jk dovrebbe funzionare.
Si, quello si, il problema era l'operatore... c'era stata un po di
confusione su divisione e moltiplicazione... una piccola incomprensione
verbale :-)
Dome
Newsgroup: it.comp.lang.c
Titolo: Problemino semplice semplice

Salve a tutti, volevo sapere come fareste voi a risolvere questo problema:
devo compattare un vettore, questo implica che se l'input è di un vettore di
10 variabili, l'uscita potrebbe essere molto minore (ovviamente dipende dal
numero di 0 che si immettono). Non ricordo come fare la gestione dinamica
dello spazio: qualcuno potrebbe consigliarmi?
Grazie.

 ha scritto nel messaggio
news:bakK6.439$f52....@news.infostrada.it...

Prova con le funzioni malloc, realloc e free.
Ciao.

 Prova con le funzioni malloc, realloc e free.
Ecco! Ricordavo che c'era qualcosa ad hoc: grazie! Se poi potete darmi
qualche consiglio sulla sintassi delle istruzioni... ;-)

 qualche consiglio sulla sintassi delle istruzioni... ;-)
Scusa se arrivo in ritardo:
MALLOC: allocazione di blocchi di memoria nell'heap (ALLOC.H, STDLIB.H)
Dichiarazione: void *malloc(unsigned int quantita)
Alloca un blocco di memoria nell'heap. L'heap è un area di memoria riservata
dal sistema operativo per il programma chiamante. Non è però da intendersi
come uno spazio di memoria già allocato e non più utilizzabile da altri
programmi.
Ritorna NULL se il blocco di lunghezza QUANTITA non rientra nelle capacità
attuali dell'heap, altrimenti un puntatore di tipo VOID al blocco di memoria
allocato.
REALLOC: ri-creazione di un blocco di memoria (ALLOC.H)
Dichiarazione: char *realloc(char *oldpoi,int dimen)
Ridimensiona un blocco di memoria. Ritorna il puntatore al nuovo blocco
creato.
L'allocazione tiene conto dei blocchi ancora liberi nell'heap. Se il blocco
già creato non consente l'allocazione del nuovo blocco (cioè se le locazioni
di memoria subito dopo il blocco già esistente non sono disponibili) il
blocco da creare viene spostato da un'altra parte, ed il blocco originario
viene deallocato. Ritorna quindi NULL in caso non ci sia più spazio di
memoria disponibile.
FREE: dealloca uno spazio di memoria riservato (STDLIB.H, ALLOC.H)
Dichiarazione: int free(void *campo)
Libera uno spazio di memoria precedentemente allocato con MALLOC, REALLOC,
CALLOC, etc etc. La funzione ritorna un valore minore di 0 in caso di errore
(campo di memoria non riservato oppure inesistente).
Ciao.

 (campo di memoria non riservato oppure inesistente).
Grazie mille! Ci provo presto...
Newsgroup: it.comp.lang.c
Titolo: malloc() && calloc()

Se ho ben capito da altri thread la differenza tra malloc() e calloc() e'
che la seconda "pulisce" lo spazio di memoria allocato.
Quindi se cambiassi tutte le malloc() di un mio ipotetico programma (sotto
Linux e compilato con gcc) in calloc() l'unica differenza sarebbe in una
preventiva pulizia della memoria prima del suo utilizzo, senza alterare
nessuna delle funzionalita' del programma e men che meno portandolo a
situazioni di instabilita', o no?
Grazie a chi mi rispondera'.
--
Napolux
http://napolux.supereva.it

situazioni di instabilita', o no?
Esatto
--
Rhymes
rhy...@myself.com
" ride or die "

 situazioni di instabilita', o no?
Forse ci perdi un po' in prestazioni; calloc(x, y) non è altro che:
...
ptr = malloc(x * y);
memset(ptr, 0, x * y);
...
-- 
                    |   .-.
Gianluca Di Corato  |  : | :  I N  P E A C E  W E  T R U S T
   (aka sgrung)     |  '/|\'

Newsgroup: it.comp.lang.c
Titolo: Fnzioni per gestire i file.

Ciao a tutti.
Tra le funzioni per la gestione dei file, ve ne sono alcune (fopen, 
fclose, fread, fwrite, ecc.) presenti nella libreria standard, ed altre 
(open, close, read, write, ecc.) implementate come system call. 
Vorrei sapere in quali casi è preferibile utilizzare il primo gruppo di 
funzioni piuttosto che il secondo, oppure se, al contrario, i due gruppi 
di funzioni sono del tutto equivalenti.
Grazie e un saluto a tutti.
Bizio.

 Bizio.
Ciao  Manlio Perillo

 Non sono affatto equivalenti.
Bene. Nel caso in cui le si abbia a disposizione entrambe, quali è 
meglio usare?
Grazie e un saluto.
Bizio.


Quelle standard. Uno perchè sono standard, e due perchè di solito
hanno un layer di funzionalità utili che le altre non hanno (come già
citato l' IO buffering ad esempio).

 Bizio.
Ciao  Manlio Perillo

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

Ciao a tutti. Ho un problemino sulla suddetta funzione: copio direttamente
dall' help
char *buf="Hello,there,stranger";
char *tok;
for (tok=strtok(buf, ","); tok; tok=strtok (0, ","))
 printf ("tok='%s"\n",tok);
il programma funziona correttamente ma il compilatore quando compilo mi
dice:
assignment makes pointer from integer without a cast
alla linea del ciclo for. Nella mia quasi totale ignoranza non riesco a
capire perchč. Perchč mi dice ciň?
Poi, a parte la virgola, vorrei mettere altri simboli che delimitano i token
e fra questi anche le virgolette ( " ). Come faccio?
Grazie
Riccardo

Devi sostituire 0 con NULL.
-- 
Posted from 
mta03-acc.tin.it
 [212.216.176.34] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG
Newsgroup: it.comp.lang.c
Titolo: Esercizi sul libro (1)

Salve.
E' la prima volta che posto in questo ng ed e' da pochissimo che mi sono
avvicinato al C.
Sto studiando servendomi di tutorial scaricati dalla rete e qualche codice
sorgente di "piccoli programmini".
Adesso con l'aiuto del "Linguaggio C" di Kernigham e Ritchie sto cercando di
"coltivare" al meglio questo hobby.
Il "lavoro" piu' complesso che ho fatto e un programma per calcolare il
determinante delle matrici 3x3... capirete quindi che sono davvero agli
inizi :).
Siccome ho appena terminato il primo capitolo sto adesso tentando di
risolvere gli esercizi in esso presenti. Alcuni (pochi) li ho risolti altri
(molti) no...
Oggi inizio con questi 5 (alcuni li ho provati a fare, altri non li ho
neppure capiti) e in futuro ne postero' altri.
Mica vado contro le regole di questo ng?
Cioe' passero' per un rompi-OO oppure sono libero di postare i miei problemi
con il C anche se ai piu' potrebbero sembrare molto elementari?
Non vorrei fare una brutta impressione...
***************************************
=======Esercizio 1-6=======
(pag 17) Verificate che l'espressione getchar() != EOF e' sempre uguale a 0
oppure ad 1.
|----------|
Boh!?!?!?!
=======Esercizio 1-7=======
(pag 17) Scrivete un programma che stampi il valore di EOF
|----------|
Boh!?!?!?!
=======Esercizio 1-8=======
(pag 20) Scrivete un programma che conti gli spazi, i caratteri di
tabulazione ed i
new line.
|----------|
#include <stdio.h>
/* Esercizio 1-8 pag 20 */
main()
{
 int c, nl, bs, tab;
    nl, bs, tab = 0;
    while ((c = getchar()) != EOF)
  if (c == '\n')
   ++nl;
  if (c == '\b')
   ++bs;
  if (c == '\t')
   ++tab;
 printf("%d %d %d \n", nl, bs, tab);
 return 0;
}
=======Esercizio 1-9=======
(pag 20) Scrivete un programma che copi il suo input sul suo output,
sostituendo una stringa di uno o piu' spazi con uno spazio singolo.
|----------|
# include <stdio.h>
/* Esercizio 1-9 pag 20 */
main()
{
 int c;
 char d;
 d = ' ';
 while ((c = getchar()) != EOF)
  putchar (d);
 return 0;
}
=======Esercizio 1-10=======
(pag 20) Scrivete un programma che copi il suo input sul suo output,
sostituendo ogni carattere di tabulazione con \t, ogni backspace con \b ed
ogni backslash con \\. Questo visualizza in modo univoco i caratteri di
tabulazione ed i
backspace.
|----------|
#include <stdio.h>
/* Esercizio 1-10 */
main()
{
 int c, b, t, bs;
 b = '\b';
 t = '\t';
 bs = '\\';
 while ((c = getchar()) != EOF)
  if (c == '\b')
   putchar(b);
  if (c == '\t')
   putchar(t);
  if (c == '\\')
   putchar(bs);
 return 0;
}
***************************************
CIAO & GRAZIE
--
~EnTrOpY~
e-mail: 
entr...@libero.it
ICQ#:        85370161

 d = ' ';
^^^^^^^^^^
perche' ???

Newsgroup: it.comp.lang.c
Titolo: lettura stringhe di catatteri da file

Buon pomeriggio a tutti,
vorrei sapere come posso sapere il numero di stringhe presenti in un
file e assegnare tale numero ad un arrey per poi utilizzarlo per altre
operazioni,tutto questo con un breve programma in C


Bisognerebbe innanzittutto sapere come sono
delimitate queste stringhe...
Ci sono 4 possibilita' principali:
1) non sono delimitate perche' sono tutte lunghe uguali
2) delimitate da spazi
3) delimitate da ritorni a capo
4) delimitate dal carattere 0
In ogni caso (a parte 1) l'unico modo per sapere
quante sono le stringhe presenti nel file e' leggerlo.
 > e assegnare tale numero ad un arrey per poi utilizzarlo per altre
 > operazioni,tutto questo con un breve programma in C
non puoi assegnare un numero ad un array.
Forse vuoi assegnare il numero di stringhe ad una variabile
intera ed allocare un array di stringhe dove copiare le stringhe
contenute nel file ?
Se ti spieghi per benino, forse qualcuno ti aiutera'.
g.

.. qualcosa del genere:
FILE  *fp;
char rigacaratteri;
int contarighe=0;
fp=fopen("c:\\miofile.txt","r");
while(!feof(fp))
{
fgets("%s\n",rigacaretteri);
contarighe++
}
printf("Le righe del file sono : %d",contarighe);
ci saranno degli errori ma + o - una cosa di questo tipo

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

Salve, 
ho un problema da risolvere con i tipi
All'interno di un mio programma devo definire il tipo ulong 
e includere sys/types.h
se io scrivo 
#ifndef ulong
#define ulong unsigned long
#endif 
ho un conflitto perche'
anche in sys/types.h e' definito ulong
con typedef unsigned long ulong (in unix ma non in windows)
come posso capire dalla mia header che il tipo ulong e' gia' definito 
e non ridefinirlo?
(uso define invece di typedef per ragioni di efficenza.) 
grazie

 (uso define invece di typedef per ragioni di efficenza.) 
Non sono d'accordo; non vedo alcun motivo per cui dovrebbe essere piu' 
efficiente ...
 Ciao
 Federico

 efficiente ...
La motivazione potrebbe essere (non sono io a dare le specifiche! si e'
capito? :-)) che typedef aggiunge una entry nella tabella dei tipi 
con la define no e sostituisce unsigned long direttamente.
Corretto?
grazie 

 la define no e sostituisce unsigned long direttamente. Corretto?
Non capisco cosa c'entri questo discorso con l'efficienza ... Dopo averlo
compilato, il programma e' uguale con typedef o con define.
 Ciao
 Federico

Newsgroup: it.comp.lang.c
Titolo: Downloadm file da internet

Dovrei crearmi una piccola utility per relevare un file di testo da un
sito per poi copiarlo in locale.
Mi potreste dare un piccolo aiuto?
Grazie
REX
www.giocatori.org
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 
Qualcosa come wget? (open source, quindi puoi sbirciare i sorgenti)
LP

Se hai un sito hai anche un server http quindi dovresti connetterti al
sito tramite una socket e poi fare una "GET" del file in questione.
Per maggiori informazioni guardati RFC1945 e RFC2068
Trovi tutte le spiegazioni di cui neccessiti.
Ciauzz

