mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c
Titolo: operatori Bitwise

devo scrivere un programma che data in input una lettera maiuscola tramite 
gli operatori bitwise la trasformi in minuscola, non riesco a trovare 
materiale su questi operatori, qualkuno potrebbe aiutarmi?
Grazie
Bibopp 

 materiale su questi operatori, qualkuno potrebbe aiutarmi?
Codifica ascii?
Ps: io sono qualcuno, non qualkuno, va bene lo stesso? :-)
-- 
Devaraja (Xdevaraja87^gmail^c0mX)
Linux Registerd User #338167
http://counter.li.org

 ha scritto nel messaggio 
news:aAZQe.119925$fm.78...@news4.tin.it...

si codifica ascii, veniamoci incontro qualk1
Grazie
Bibopp

bibop ha scritto:

Normalmente per trasformare una maiuscola ascii in una minuscola, 
bisogna sommare 32 (se non sbaglio). Con gli op bitwise non saprei come 
procedere ma mi interessa. Vediamo: 'A' corrisponde a 0x41, mentre 'a' 
corrisponde a 0x61.
'A' 0100 0001
'a' 0110 0001
Dovrebbe funzionare facendo qualcosa tipo:
char lett='A';
lett|=0x20;


 
http://counter.li.org
A questo + o - c'ero arrivato cioè teoricamente ok, ma è la fase 
realizzativa che mi manca
Grazie
Bibopp

 
 >>lett|=0x20;
Questa e' la fase realizzativa. Cosa vuoi di piu'? Ho appena provato 
queste due righe e funzionano perfettamente. Ovviamente devi creare 
un'interfaccia, ma questo non ha niente a che vedere con quello che hai 
chiesto. Comunque...
int main()
{
    int lettera;
    int i,z;
    for(i=0;i<20;i++){
	lettera=getc(stdin);
	while((z=getc(stdin))!='\n') ;
	lettera|=0x20;
	printf("La minuscola e' %c\n",lettera);
    }
    return 0;
}
Scritto al volo, non ti assicuro niente.


Newsgroup: it.comp.lang.c
Titolo: sound.h

Ciao, sapreste dirmi se c'è l'equivalende di sound.h per windows?
Grazie a chi mi rispondirà
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Se usi vc++, puoi linkare la libreria winmm.lib e scrivere
semplicemente:
 PlaySound( . .);
Ciao.
HS_


Newsgroup: it.comp.lang.c
Titolo: iniziare col C

Salve, vi chiedo consigli per partire in quarta!
Conosco molto bene i
fondamenti della programmazione ed il linguaggio Pascal, ma voglio passare
al C. Potete consigliarmi un buon testo, magari già sperimentato da voi
stessi? Volendo approdare al C++, è indispensabile conoscere il C? Che
differenza c'è tra C++ e Visual C? Infine, quale testo per il C++ (o per il
Visual C) mi consigliate?
Vi ringrazio infinitamente e sono sempre
disponibile per aiutarvi, magari, a mia volta.
Ciao, elios.
--------------------------------
Inviato via 
http://usenet.iol.it

 disponibile per aiutarvi, magari, a mia volta.
Grazie;-)
Alex

 Ciao, elios.
ciao
-- 
Abruzzo SIlvio
goku_...@libero.it
silvi...@aruba.it
Linux Machine 219721
^_____^

 ha scritto nel messaggio
news:151Z21Z226Z11Y...@usenet.iol.it...

Ti consiglio "Programmazione C" di -kerningam e Ritchie, il C l'hanno in
pratica quasi creato loro, il libro ti da le nozioni basi in modo facile.Non
costa nemmeno molto.
NO,puoi fare C++ senza sapere C,almeno io ho visto parecchia gente
farlo.Comuqnue il C è fondamentale ovunque,imparalo, è la base
indispensabile di un buon programmatore.
saluti,mikichan
Newsgroup: it.comp.lang.c
Titolo: compilatori freeware

Ciao, qualcuno sa dirmi dove posso trovare compilatori c c++ freeware
sulla rete?
Grazie.
e-mail to:  
me5...@mclink.it

...


Newsgroup: it.comp.lang.c
Titolo: Cursore in un punto x,y

Salve, qualcuno sa dirmi come posso posizionare
il cursore in un determinato punto dello schermo?
Qualcosa di simile al gotoxy del pascal
-- 
My OS: Linux Red Hat 7.2
ICQ #147054457
Linux User #276372
Linux Machine #159118

 Qualcosa di simile al gotoxy del pascal
Dicono che sia buona pratica seguire per qualche giorni un ng e leggerne
i  vecchi messaggi  prima  di  postare. Se tu  lo  avessi fatto  avresti
scoperto che questa domanda e` stata posta un sacco di volte. E sapresti
anche che e` OT.
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
Il dottore mi ha detto di smettere di fare cene intime per quattro.
A meno che non ci siamo altre tre persone.

 Qualcosa di simile al gotoxy del pascal
Potresti usare le ncurses. Comunque come ti hanno già detto questa
domanda è stata postata nell'ultima settimana, quindi d'ora in poi
faresti meglio a seguire i ng per un po' prima di postare ok? Ciao ;-)
Newsgroup: it.comp.lang.c
Titolo: Array di interi ad una funzioneCome?

-- 
Salve a tutti , vorrei sapere come posso fare a passare una particolare
locazione 
di in array di interi ad una funzione 
il prototipo della funzione xyz(int a1[], int a2[]);
il vettore e pippo[10];
la funzione xyz(&pippo1[0],&pippo[1]);  e giusto , se no come posso fare
per dare ad una 
funzione una singola locazione di un array di interi ed anche tutto l'array


I'm not prejudiced, I hate everyone equally.

Newsgroup: it.comp.lang.c
Titolo: Union vs. Struct

Ciao a tutti,
posso usare una union tutte le volte che mi servirebbe una struct ? La
differenza sta solo nel risparmio di memoria delle union or i'm missing
something?
Grazie,
Lorenzo
P.S Ho finito di imparare la sintassi BASE del C che testi mi consigliate
per proseguire? Qualcosa sugli algoritmi? Ho letto "C corso completo di
programmazione" di Deitel & Deitel + Teach Yourself C in 24 hours. Ho a
disposizione il K&R ma cosa offre questo libro esattamente?



nella union puoi avere un solo valore ...
perché tutti gli altri operandi condivideranno lo stesso spazio di
memoria ...
fai tu
cod

 posso usare una union tutte le volte che mi servirebbe una struct 
No.
La union ti e' utile solo nel caso tu abbia bisogno di
condividere  la memoria contenuta nella struttura  tra 
diversi campi, per cui essi vengono "uniti".
Modificandone  uno, modifichi anche tutti  gli  altri,
perche' condividono tutti la stessa zona di memoria.
La struttura, invece, ti e' utile se vuoi  distinguere
i valori dei campi in zone di memorie diverse, in modo
da mantenere indipendenti le modifiche su ciascuno  di
essi.
Un piccolo esempio:
<CODE>
#include <stdio.h>
union myunion {
      int   i ;
      char *p ;
      float f ;
};
struct mystruct {
       int   i;
       char *p;
       float f;
};
void print_union(union myunion U)
{
     printf("i = %-12d p = %-12p f = %5.5f\n", U.i, U.p, U.f);
}
void print_struct(struct mystruct S)
{
     printf("i = %-12d p = %-12p f = %5.5f\n", S.i, S.p, S.f);
}
int main()
{
    union myunion Union;
    struct mystruct Struct;
    printf("--- union:\n");
    Union.i = 0;
    print_union(Union);
    Union.f = 3.1415927;
    print_union(Union);
    Union.p = (char*)0xabcdef0;
    print_union(Union);
    printf("\n--- struct:\n");
    Struct.i = 0;
    print_struct(Struct);
    Struct.f = 3.1415927;
    print_struct(Struct);
    Struct.p = (char*)0xabcdef0;
    print_struct(Struct);
    getchar();
    return 0;
}
</CODE>
-- 
Posted from  [80.105.34.80] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Grazie mille per le risposte ;-)
Ciao,
Lo
Newsgroup: it.comp.lang.c
Titolo: non mi binda la porta

Non mi binda la porta.. esce alla bind.. sto impazzendo.. qualcuno mi puo
aiutare? (la porta che sto usando.. non è occupata da nulla)
Grazie
// server_socket.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <winsock.h>
#pragma comment(lib, "wsock32.lib")
int _tmain(int argc, _TCHAR* argv[])
{
	WSAData wsa;
	WSAStartup(MAKEWORD(1, 1), &wsa);
	sockaddr_in sin;
	SOCKET sock;
	if((sock = socket(PF_INET, SOCK_STREAM, 0)) == SOCKET_ERROR)
	{
		printf("Errore 1");
		return 1;
	}
	sin.sin_family = AF_INET;
	sin.sin_port = htons(1234);
	if(bind(sock, (sockaddr *)&sin, sizeof(sockaddr_in) == SOCKET_ERROR))
	{
		printf("Errore 2");
		return 1;
	}
	if(listen(sock, 200) == SOCKET_ERROR)
	{
		printf("Errore 3");
		return 1;
	}
	return 0;
}
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

> if(bind(sock, (sockaddr *)&sin, sizeof(sockaddr_in) == SOCKET_ERROR))
c'è un errore di parentesi:
if(bind(sock, (sockaddr *)&sin, sizeof(sockaddr_in)) == SOCKET_ERROR)
___________________________________________________|
--------------------------------
Inviato via 
http://usenet.libero.it

 }
Ti rendi conto che controlli che sizeof(socketaddr_in sia uguale a 
SOCKET_ERROR? :P
Per il resto potrebbe ancora fallire se la porta e' gia' in uso... potrebbe 
andari bene o no, dipende dallo scopo del programma.
-- 
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."

 [snip]
by LjL
ljl...@tiscalinet.it

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

hola a tutta la NG
ho una domanda stupida sulla ricorsione...
vorrei fare una funzione ricorsiva che dato n mi stampi un triangolo
rettangolo di asterischi :
n=5
*
**
***
****
*****

 *****
dobbiamo fare la chiamata prima di stampare gli n (attuale n) asterischi,
altrimenti se la chiamiamo dopo otteniamo:
*****
****
***
**
*
Che e' altrettanto piacevole, ma non e' quello che vuoi ;-)
In altre parole avendo la chiamata ricorsiva prima della putchar() faccio in
modo che xxx(1) stampi prima di  xxx(5).
il while stampa n caratteri, dove n e' il valore all'interno di quella
chiamata ricorsiva.
all'inizio sara' 5, poi 4, poi 3 etc....
Per finire stampiamo il \n per terminare la riga.
Spero di essere stato chiaro. Se hai problemi fatti vivo!
Tommy
Newsgroup: it.comp.lang.c
Titolo: Problema Vettori

Salve vorrei porre una domanda, sono nuovo del linguaggio,
e non ho capito i vettori,
Io ero abituato in pascal che facevo un vettore di 10 elementi,
e dopo il decimo elemento, io non leggevo oltre (non mi era concesso)
, ma ho notato un funzionamento diverso col C, Cioe' io col C, posso
dichiarare
un vettore di char s[10], e so' che questo vettore andra da 0 a 9,
pero' volendo io posso anche scrivere nel dodicesimo elemento,
ed andare a leggere il dodicesimo elemento, logicamente
andando ad inquinare un'area di memoria occupata da un'altra
struttura dati ....... percio' sta al programmatore, utilizzare
senza errori questa struttura dati..........
E' Giusta la mia analisi ?
-------------------------------------
-      Marchesi Maximiliano         -
-     "
mmar...@cs.unibo.it
"        -
-------------------------------------

...


 -------------------------------------
Fondamentalmente si'. Un appunto e' che non e' affatto garantito che tu possa
leggere e scrivere oltre i limiti di allocazione del vettore. Il risultato di
un operazione di tal genere e' indefinito, cioe' qualunque cosa puo' accadere
incluso, caso molto frequente, che il programma collassi dandoti core dump.
Visto il funzionamento degli array in C e' buona prassi non usare numeri
scritti a mano nel codice per dimensionare gli array ma scrivere qualcosa del
genere #deifne SIZE 10 char s[SIZE];
for(n=0; n< SIZE; n++)
  s[n] = ....;
Ciao Paolo
-----------== Posted via Deja News, The Discussion Network ==----------
http://www.dejanews.com/
       Search, Read, Discuss, or Start Your Own    

Grazie a tutti per le risposte ora e' tutto piu chiaro....
Ciao alla prossima........
paolo...@my-dejanews.com
 wrote:

--


Newsgroup: it.comp.lang.c
Titolo: [Urgente] Aiuto per uno studente

Dovrei realizzare velocemente per la scuola un semplice programmino che
realizzi e gestisca una rubrica telefonica.
Qualcuno sa dirmi se online si trovano esempi di qualcosa del genere?Grazie.


Su tutti i siti di tutti i dipartimanti di scienze dell'informazione e
ingegneria informatica,
i professori sovente mettono esempi e utili consigli online per gli studenti
dei loro corsi e per la maggior parte sono ad accesso pubblico! Un saluto.
Newsgroup: it.comp.lang.c
Titolo: Compilare più programmi insieme

Dunque mettiamo che io abbia i seguenti file:
**********************************************************
file: main.c
#include "myfile.h"
void main()
{
    printf("L'area č: %d", area(10));
}
**********************************************************
file: myfile.h
int area(int r);
**********************************************************
file: myfile.c
#include "myfile.h"
#include "globalh"
int area( int r)
{
    return PI*r*r;
}
**********************************************************
file: global.h
#define PI 3.1415
Come compilo il tutto con il gcc???
Ho provato con gcc main.c o gcc myfile.c o gcc myfile.h ma non sono riuscito
a combinare nulla....
Normalmente uso il wpe devo creare un progetto in cui includere tutti i
file??'
Grazie
--
-----------------------------------------------
Andrea Sistarelli - Terni - Italy
si...@freemail.it
si...@softhome.net
 - Solo per gli attachment
ICQ: 11598516
-----------------------------------------------


ICQ #34602650

void main()
int main()

 Come compilo il tutto con il gcc???
gcc main.c myfile.c ; l'eseguibile si chiamera', di default, a.out.
Prova a fare "man gcc" la prossima volta ...
BTW: main ritorna int; un \n non ci starebbe male nella printf;
dichiarando il return type di area int e non double il risultato del
calcolo viene convertito ad int e troncato; anche il parametro formale
di area mi torna poco sia di tipo int; 5 cifre significative per PI
sarebbero pochine (se non convertissi l'area in intero :-).
-- 
Maurizio Loreti                      
http://wwwcdf.pd.infn.it/~loreti/mlo.html
Un. of Padova, Dept. of Physics - Padova, Italy          
lor...@padova.infn.it

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

Salve ragzzi mi date una mano vi prego!!!!1
Allora il mio problema è che non riesco a capire dove sbaglio!!!!
ora devo fare un'esercizio scrivere incolonnati dei numeri da 1 a 15, il
quadrato e la radice quadrata
1° problema siccome devo farlo compilare sotto unix mi dice che sqrt() e pow
non sono codici ammessi, non lo fà partire
2° problema  il ciclo di iterazione for incremento
non mi dovrebbe stampare a video la sequenza di numeri da 1 a 15? booo!
ho fatto la prova togliendo sqrt() e lasciando solo il c=1*1
mi scrive solo il valore 16 con il quadrato!!!!
Per far comparire tutti i  numeri da 1 a 15 come si fà!!!!
/* -Descrizione scrivere incolonnati i numeri da 1 a 15, il quadrato e
radice quadrata-*/
#include <math.h>
#include <stdio.h>
#define N 15
main()
{
int i; integer c; float p;
printf("\t Numero \t Quadrato\t Radicequadrata\n");
for (i = 0; i <= N; ++i);
{
p=sqrt(i); c= pow(i,i); ( meglio se c=i*i)
printf("\t %d \t\t %f \n",i, p,c);
}
}

 }

 }
HTH
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG
Newsgroup: it.comp.lang.c
Titolo: interfaccia grafica per windows

Ciao a tutti.
per programmare uso "Miracle C".
il risultato sono programmi che girano in una finestra dos (anche con WinXP)
come faccio a trasformare un programma eseguibile in Win e magari dotato di
una interfaccia grafica?
...sono davvero alle prime armi.....
--
Per rispondere via e-mail togliere XX  dall'indirizzo
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
Homepage:
httrp://
members.xoom.it/giacopiane

 ...sono davvero alle prime armi.....
Finisci prima di studiarti il C. Quando capirai tutto sul K&R allora puoi
imparare le API di windows (win32 APIs).
Se il K&R e' un tantino difficile per te, procurati un corso. Forse dovresti
comprarti il Deitel&Deitel sul C.
Poi una volta letto quello troverai semplice anche il K&R e incomincierai ad
apprezzarlo.
Iniziare con il K&R non e' consigliato (anche se molti su questo NG lo
consigliano).
Tornando alla programmazione win32. Ora e' presto, aspetta non fare passi
affrettati!
Quando avrai letto sia il Deitel&Deitel che il K&R allora procurati il
miglior libro (tutorial) sulla programmazione per windows in C: Il libro e'
di Charles Petzold e' edito da Microsoft Press.
Ad ogni modo tutto cio' che concerne la programmazione per un specifica
piattaforma (in questo caso windows) e' OT su questo NG.
Tommy
Newsgroup: it.comp.lang.c
Titolo: Programmatore inesperto

Ho iniziato da poco a programmare in C ed avrei bisogno di qualche
informazione:
- Come si fa a manipolare l'aspetto dei caratteri visualizzati o a
cancellare lo schermo?
- E' possibile cancellare in modo irreversibile un file (senza cioe' poterlo
recuperare con programmi del tipo "Undelete")?
Naturalmente mi riferisco a procedure in C, possibilmente senza l'utilizzo
di chiamate al DOS (system("cls") sarebbe troppo semplice...).
Grazie,
Franz.
Per rispondere, rimuovere RUDEPRAVDA dall'indirizzo.

 recuperare con programmi del tipo "Undelete")?
Penso che questo dovrebbe funzionare anche se forse si puo' fare il tutto in
modo piu' efficiente:
#include <stdio.h>
int CancellaIlFileInModoIrreversibile(char *filename)
  {
   FILE *fp;
   unsigned long l,i;
   char *s="Tutto Cancellato ";
   fp=fopen(filename,"wb");
   if (fp==NULL) return 0; /*non si riesce ad aprire il file in scrittura*/
   fseek(fp,0,SEEK_END);
   l=ftell(fp); /*l e' la lunghezza del file*/
   fseek(fp,0,SEEK_SET);
   for(i=0;i<l;)
     {
      i+=fwrite(s,sizeof(char),max(strlen(s),l-i),fp);
      /* sto riempiendo il file con tante copie della stringa s*/
     }
   fclose(fp);
   remove(filename);
   return 1;
  }

Newsgroup: it.comp.lang.c
Titolo: Compilatore C per DOS

Salve a tutti, vorrei sapere se esiste ancora qualche versione
del C per Dos, e se si, da dove la posso scaricare?
Grazie tante!!!
--
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
e-mail: 
cerch...@ciaoweb.it
cell.: 338/1347116
l'elenco telefonico dei telefonini:
http://www.elencoonline.it/
Bye byte, Cerchietto
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

del C per Dos, e se si, da dove la posso scaricare?
http://www.borland.com/downloads/
--
Naquern Yansbetevn
naquern.y...@africamail.com

 Grazie tante!!!
 
http://www.delorie.com/djgpp/
 DJGPP is a complete 32-bit C/C++ development system for Intel 80386 (and
 higher) PCs running DOS. It includes ports of many GNU
 development utilities. The development tools require a 80386 or newer
 computer to run, as do the programs they produce. In most
 cases, the programs it produces can be sold commercially without
 license or royalties.
 E' il migliore che conosca
 Ciao,
	Marcello
------------------------------------
take a look at 
http://www.physics.it
------------------------------------
Newsgroup: it.comp.lang.c
Titolo: Problema stupido

Salve !!!
Ho questa struttura:
struct node {
  int k;
  struct node *left, *right;
};
e questa funzione:
struct node *newnode(int key, struct node *l,struct node *r) {
  struct node *t;
  t = (struct node *)malloc(sizeof(*t));
  t->k = key;
  t->left = l;
  t->right = r;
  newnode = t;
}
Come mai questo?
bash-2.05a$ cc -ggdb btree.c -o btree
btree.c: In function `newnode':
btree.c:43: invalid lvalue in assignment
-- 
Massimiliano Masi - m...@MasCanc.NET
Anger is a gift ... - 
http://www.mascanc.net/~max

btree.c:43: invalid lvalue in assignment
non è che invece di newnode = t; volevi mettere return t; ??
-- 
Ciao, Giuseppe

 
Non puoi assegnare qualcosa a una funzione..
Suppongo che quello che tu voglia fare sia:
  return t;
Se non è così, replica pure
Ciao,
		tano
-- 
  O W D  Remember always : Tano's food is very good!!
  | | |                    Gnam gnam!!

  newnode = t;
che brutta cosa essere abituati a lavorare in visual basic, vero? ;)
la soluzione te l'hanno gia' data :)
saluti.
-- 
      Gianni "bugbarbeq" Rondinini, 26+15, RA, 193, 152
   VBR - Vero Birro Romagnolo®, diffidate dalle imitazioni!
 BMW 530D "BatMobile EVO" Driver - Escortone da 500 CV dreamer
Kawasaki "Gas Gas" ZZ-R 1100 - HD Electra Ultra Classic Dreamer
   On contrary of popular belief, Unix *IS* user friendly:
    it just appears to be selective who it is friend with

 la soluzione te l'hanno gia' data :)
Effettivamente, in TurboPascal, la chiusura di una chiamata ricorsiva
finisce cosi'... :) Per assegnare un valore di ritorno ad una funzione
ricorsiva, assegnavo un valore a questa funzione in questo modo ... :)

Newsgroup: it.comp.lang.c
Titolo: help programma di somma

Sono uno straprincipiante, mi aiutate? Cosa c'e' che non va in questo
programma che deve sommare due numeri? Perdomatemi se ho scritto cazzate
immonde... :-D
#include <stdio.h>
/*---------------------*/
/* SOMMA */
/*---------------------*/
main()
 {
  float op1, op2, risultato; /* operandi e risultato*/
  printf("Inserisci il primo operando : ");
  scanf("",op1);
  printf("Inserisci il secondo operando : ");
  scanf("",op2);
  risultato=op1+op2;
  printf("",risultato);
 }
--------------------------------
Inviato via 
http://usenet.libero.it

 Sono uno straprincipiante, mi aiutate? Cosa c'e' che non va in questo
Le scanf() e printf() sono utilizzate in maniera errata.
Riscrivi:
  printf("Inserisci il primo operando : ");
  scanf("%f",&op1);
  printf("Inserisci il secondo operando : ");
  scanf("%f",&op2);
  risultato=op1+op2;
  printf("%f",risultato);
che genera l'output:
Inserisci il primo operando : 12.12
Inserisci il secondo operando : 23.23
35.349999   (un pensiero alla IEEE)
Ciao,
Paolo PAL.

Il 25 Lug 2003, 18:57, "Paolo PAL" <pc...@tiscaliNienteRobaccia.it> ha
scritto:

mi spiegheresti il perche'?
non ho capito il fatto del & davanti alle variabili e il fatto che si mette
%f anziche' %d...
grazie



%f  e' il formato per i float, %d e' quello per gli interi.
la & serve perche' alla scanf devi passagli i puntatori alle variabili in
cui salvare i valori letti.
Credo che in un qualsiasi manuale c troverai le stesse informazioni spiegate
mooolto meglio e magari anche con degli esempi.
Ciao,
Ema

%f  e' il formato per i float, %d e' quello per gli interi.
Nel caso della scanf(), bisogna aggiungere che %Lf è per i double,
mentre %f vale sia per i float che per i double (per via della
promozione di tipo).
-- 
Andrea Laforgia
Open Delphi Manual
http://groups.yahoo.com/group/delphi_open_manual/

mentre per la printf() %f vale sia per i float che per i double (per via della

Newsgroup: it.comp.lang.c
Titolo: manuale free

ciao a tutti, sto affrontando un corso di algoritmi ed ho già comprato un
librone che costa uno sproposito. Siccome nel corso usiamo il C, e siccome
io di come si programma in C non so nulla(so un po' di C++, ma non credo sia
la stessa cosa!..), vorrei sapere se esiste su internet qualche
libro/manuale di programmazione C a gratis, che tratti dell'ANSI C e che sia
di buon livello.
Ciao.

Ciao.
http://directory.google.com/Top/World/Italiano/Computer/Programmazione/C/
Alla prossima,
Giovanni Cappellini
http://giovacappo.cjb.net
ICQ 166932196

Vai su 
http://www.hyperbook.it/
 troverai i seguenti manuali "C,Java,Perl"

 wrote:

http://www.freebooks.by.ru/
ciao

il manuale sul c 
http://www.hyperbook.it/
 di Pino_72 č molto buono
io ho il libro cartaceo e per algoritmi e strutture dati va molto bene.
spiega anche liste dinamiche ed alberi binari.
ma dai un'occhiata anche a "Tricky C", č molto famoso in rete.
http://ada2.unipv.it/biblio/trickyc/trkcfrm.htm

 
http://ada2.unipv.it/biblio/trickyc/trkcfrm.htm
Erroneamente famoso, essendo un testo a dir poco mediocre.
Lascialo dov'è Tricky C. Al massimo risparmia un po' e prendi un libro :-)
Ciao,
	Nicholas

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

VI PREGO,STO CERCANDO UNA PERSONA,SI FA CHIAMARE DOCTORELEVEN!!!
MI AIUTATE VE NE SUPPLICO è IMPORTANTE!!!!
SE STESSE LEGGENDO IL MESSAGGIO O QUALCUNO SA DOVE POSSO TROVARLO MI
SCRIVA,GLIENE SARò MOLTO GRATO!!!
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 SCRIVA,GLIENE SARò MOLTO GRATO!!!
Se urli non ti caga nessuno!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Newsgroup: it.comp.lang.c
Titolo: puntatore non assegnabile

Buona sera a tutti:
devo modificare un vettore di strutture dentro una funzione, e vorrei che
fosse aggiornato e visibile anche dalla funzione chiamante. Lo passo come
indirizzo (scrivendo cioè solo il nome, o equivalentemente &nome[0]) e
dentro la funzione lo modifico così:
nome[i]=altroarray[j];
credo che questa sia sbagliata ma non riesco a scrivere:
&nome[i]=&altroarray[j];   perché mi da errore di compilazione (errore di
assegnazione)
Questo sarebbe il modo corretto per modificare il puntatore, affinché,
quando la funzione chiamata finisce, rimanga aggiornato il valore puntato,
no?
grazie a tutti
Daniele

 no?
Continuo a non essere sicuro di quello che vuoi fare :) Se vuoi cambiare
un o piu` elementi dell'array allora la prima scrittura e` quella
corretta. Se vuoi cambiare l'array stesso allora devi aggiungere un
ulteriore livello di indirezione (ie. passare un puntatore ad un
puntatore alla funzione) oppure fare in modo che la funzione restituisca
il nuovo array.
Luca
-- 
Home: 
http://kronoz.cjb.net
Sbagliare è umano, ma per incasinare davvero le cose serve un computer.
Newsgroup: it.comp.lang.c
Titolo: flush()...

provvede allo svuotamento dei buffer (non solo fflush).
A me risulta che non necessariamente dopo aver magari mandato in output ad
esempio un carattere questo venga effettivamente scritto. Non serve appunto
un riposizionamento o un flush, o mangari un newline mandato in output?
Inoltre, un'altra cosa: ,le modalità "r+" e "w+" sono equivalenti dal punto
di vista della scrittura/lettura(lo so che il comportamento è diverso in
caso ad esempio di file inesistente...) E "a+" ha solo di diverso che
all'inizio l'indicatore punta alla fine del file, e per leggere dall'inizio
devo fare sempre un rewind()?
Scusa per tutte queste domande su questi argomenti, ma fin'ora non avevo mai
usato stream di aggiornamento, e ad esempio il K&R non ne parla più di
tanto...
Grazie comunque per le risposte date fin'ora e per la pazienza.
--
Marco Iannaccone     
marc...@tin.it
ICQ: 18748121           Tolkien
"I've... seen things you people wouldn't believe. Attack ships on fire off
the shoulder of Orion.
I watched C-beams... glitter in the dark near the Tanhauser Gate. All
those... moments will be lost... in time..., like... tears... in... rain."
FAQ it.comp.lang.c: 
http://www.programmazione.it/linguaggi/c/itcomplangc.htm
FAQ it.comp.lang.c++: 
http://www.programmazione.it/linguaggi/c/lang_faq.htm

devo fare sempre un rewind()?
"r+" e "w+" non sono equivalenti.
Con "r+" il file non viene sovrascritto, mentre con "w+" si.
rewind() va comunque bene.
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
"I know every element of C" - Ioannis Vranos

 rewind() va comunque bene.
Ah, che fesso, non ci avevo proprio pensato. In pratica appena aperti si
comportano come se fossero senza il +(sia per quanto riguarda indicatore,
sovrascrittura e comportamento in caso di file mancante), avendo comunque la
possibilità di fare anche l'altra operazione, no?
Grazie comunque :-)


Newsgroup: it.comp.lang.c
Titolo: [OT] Dos PacMan

Ciao a tutti.Sono un programmatore C alle prime armi e vorrei realizzare
PacMan per dos !
Qualcuno per favore potrebbe dirmi se esistono comandi per muovere una
lettera ,senza usare file header vari o librerie difficili ?
Io ho realizzato una specie di pacman ma ho usato il 'gettextinfo' e i
soliti comandi per disegnare il quadro cprintf. . .
Anche una 'A' che si muove nelle direzioni delle freccie !
Se qualcuno mi dice cosa studiare o come gestire le immagini nel dos č
meglio.
Meglio vedere un immagine che si muove che una 'A'.Ad esempio :Commander
Keen della id ,come č stato realizzato ?Che formato erano le immagini
del quadro e come avviene lo scrolling nel dos ?
Ciao e grazie di cuore.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 del quadro e come avviene lo scrolling nel dos ?
   Libreria grafica Allegro 
(
http://www.talula.demon.co.uk/allegro/readme.html
) e compilatore DJGPP 
(
http://www.delorie.com/djgpp/
). Buon divertimento.
-- 
Alla prossima,
Marco

ti consiglio anche di provare questo news group
it.comp.giochi.sviluppo
ciao
Newsgroup: it.comp.lang.c
Titolo: glibc encrypt e setkey

Ciao al NG!
Ho un problema nel capire come comporre la stringa da passare alla
funzione SETKEY della libreria glibc. Premetto che ho letto il man e le
specifiche riportate nella documentazione della glibc.
#include <string.h>
#include <crypt.h>
int main() {
questi sono i 3 modi con il quale ho provato a settare la key che sarà
utilizzata da encrypt
1- const char key[64]=
"1100111000110111111110001100000000111000000101101110111100011010";
 /* bit pattern for key */
2 -const char key[64]=
"\x1\x1\x0\x0\x1\x1\x1\x0\x0\x0\x1\x1\x0\x1\x1\x1\x1\x1\x1\x1\x1\x0\x0\x0\x1\x1\x0\x0\x0\x0\x0\x0\x0\x0\x1\x1\x1\x0\x0\x0\x0\x0\x0\x1\x0\x1\x1\x0\x1\x1\x1\x0\x1\x1\x1\x1\x0\x0\x0\x1\x1\x0\x1\x0";
     /* bit pattern for key */
3 -
strcpy(key,"iuukhjpk0.(87tgfr%rtgfXSDefgtrfdsaqwWWeQpOkljjuihhjuhhjk78mNMNo");
nei primi due casi ho cercato di mantenere i criteri di parità
"dispari" come previsto dalle specifiche, ma a questo punto credo di
non aver capito come comporre la chiave!!. Dov'e' la mia ignoranza???
  char txt[64];      /* bit pattern for messages */
  strcpy(txt,"ciao il mio nome e pippo");
  setkey(key);
  encrypt(txt, 0);   /* encode */
  encrypt(txt, 1);   /* decode */
  return 0;
}
questo e il risultato dopo l'esecuzione di encrypt(txt,0) controllando
con gdb
(gdb) p txt
$1 =
"\000\001\001\000\001\000\000\000\000\001\000\001\000\000\001\001\001\000\000\000\001\001\001\001\000\001\000\000\000\000\000\000\001\000\000\000\001\001\000\000\000\001\001\001\000\001\000\001\000\000\000\001\001\000\000\000\000\000\001\000\001\001\001"
...
e questo dopo l'esecuzione di encrypt(txt,1) cioè il decrypt. Dovrei
avere il testo di nuovo in chiaro no?
(gdb) p txt
$2 = '\001' <repeats 24 times>, "\000\001\001\001\001\000\000\000",
'\001' <repeats 32 times>
(gdb)
praticamente non fa un tubo o quasi.

  /* bit pattern for key */
Se setkey accetta stringhe, questa dichiarazione e' sbagliata: hai
riservato 64 posizioni e ne servono 65.
Le stringhe vogliono il tappo ('\0').
Elimina la dimensione dell'array e lascia che sia il compilatore ad
occuparsene.
const char key[]= "110011100 ... ";
HTH
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG


provato anche così ma tutto come prima.
Non riesco a trovare esempi validi in rete e nei NGs
Tu avevi provato?

 Tu avevi provato?
non l'ho mai usata, ma la definizione ottenuta facendo man setkey mi sembra
molto chiara. Ti ricopio un estratto
"These  functions  encrypt  and  decrypt 64-bit messages. The setkey() function
sets the key used by encrypt().
The key parameter used here is an array of 64 bytes, each of which has numerical
 value  1  or  0.  "
Si tratta quindi di un array di bytes, ognuno dei quali rappresenta un
bit e vale 0 oppure 1.
Il modo piu' chiaro per inizializzare questa cosa e' scrivere
const char chiave[64]={0,0,0,1,1,0,0,1,.......,0,0,1};
non c'e' bisogno di dimensionare l'array a 65 posizioni, perche'
non viene interpretato come una stringa di caratteri, ma come un array di bytes.
ciao,
g.
Newsgroup: it.comp.lang.c
Titolo: compilatore assembler

Salve, dove posso scaricare un compilatore assembler tipo il Turbo Assembler
4.0, ho visto sul sito della borland ma non l'ho trovato.
Oppure qualcuno animato di buona volontą potrebbe postare il sorgente per
eseguire delle semplici istruzioni in assembler in C, cioč utilizzando al
funzione asm{ ..... }
Ringrazio anticipatamente


Un assembler free č NASM. Lo trovi su:
www.web-sites.co.uk/nasm/
HTH

Newsgroup: it.comp.lang.c
Titolo: Stampa da C

Salve a tutti. Proprio oggi sono tornato da mare e... sono subito
rientrato nello stress quotidiano. Volevo chiedervi.. come faccio a
farstampare qualcosa da un codice c? Se non mi avete capito... invece di
stampare a video una stringa voglio utilizzare la stampante. Esiste
qualche libreria che mi permette di farlo. A me basta stampare un semplice
file di testo in ascii a 7 bit. Grazie mille
nem...@sdf.lonestar.org
SDF Public Access UNIX System - 
http://sdf.lonestar.org
-- 
Posted from 
nem...@t3-d-static-237.adsl.directlink.net
 [63.68.131.237] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 file di testo in ascii a 7 bit. Grazie mille
allora dovrebbe essere sufficente usare lo stream stdprn, esempio:
#include <stdio.h>
fprintf( stdprn,"format string",... );
fputs( "testo",stdprn );
fputc( char,stdprn );
ciao
donCiccio

 allora dovrebbe essere sufficente usare lo stream stdprn, esempio:
Non mi pare sia standard.
EMG

Newsgroup: it.comp.lang.c
Titolo: Installazione allegro. AIUTO!!!

Nel file readme c'e' scritto che prima di utilizzare questa libreria grafica
la devo compilare (tramite make).
Che comandi devo usare?

 ha scritto nel messaggio
news:8gp6e4$99l$1...@pegasus.tiscalinet.it...

Newsgroup: it.comp.lang.c
Titolo: Aiuto con i thread

sto provando a creare dei thread usando le glibc2.1.2
riesco a creare e chiudere regolarmente i thread, ma il problema sorge
quando devo passare dei parametri al thread
il prototipo della funzione e'
int  pthread_create(pthread_t  *  thread, pthread_attr_t * attr, 
void * (*start_routine)(void *), void * arg);
considerando qualcosa del genere
#include <pthread.h>
#include <stdio.h>
#include <unistd.h>
void * newt (void * arg) {
	char * x;
	int p=getpid();
	printf("Mex dal thread\n");
	printf("Il mio pid e' %i\n",p);
	p=getppid();
	printf("Il pid del genitore e' %i\n",p);
	return(NULL);
}
int main () {
	pthread_t th;
	char buff="asdfghjkl";
	pthread_create(&th,NULL,newt,(void *)buff);
	pthread_detach(th);
	pthread_exit(NULL);
	return 0;
}
come faccio a recuperare il parametro passato all'interno di newt?
io ho provato a fare x = (char *)arg, ma il programma va in seg fault...
protreste darmi qualche consiglio?
ciao
Kronos
-- 
Home: 
http://kronoz.tsx.org
Let me make your mind, leave yourself behind
Be not afraid

io ho provato a fare x = (char *)arg, ma il programma va in seg fault...
In (*) il compilatore che dice? Ti dara' almeno uno warning.
Prova con
char *buffer = "miastringa";
anche se il tutto mi sembra un po' strano: immagino che come conseguenza
dell'istruzione (*),
il carattere buff sia il MSB (o LSB) del puntatore a quella stringa; il cast
(void*)buff non dovrebbe provocare particolari problemi (sara' semplicemente
un puntatore non valido). Poi l'istruzione x = (char*)arg dovrebbe essere
valida, dal momento che la funzione newt puo' accedere senza problemi sia a
x che ad arg.
Non e' che il problema veniva quando cercavi di utilizzare x (cosa che nel
codice che hai postato non viene fatta)?
Saluti,
    Mardy

 codice che hai postato non viene fatta)?
si', nel programma passo un array di stringhe creato con malloc, solo
che ad un certo punto avevo scritto c++ al posto di ++c e andavo a 
leggere un area non allocata :(
se invece dovessi passare due o piu' parametri?
ad esempio, come faccio a passare due int e recuperare i loro valori
nella funzione?
grazie e ciao
Kronos
-- 
Home: 
http://kronoz.tsx.org
Un apostolo vedendo Gesu' camminare sulle acque:
- Cazzo se e' buono 'sto fumo!!!

nella funzione?
Si mettono tutti i parametri in una struttura e si passa
l'indirizzo della struttura.
Andrea
--
Andrea Griffini, Programmer
http://www.netservers.com/~agriff

nella funzione?
Crei una struct che abbia due campi int, e passi alla funzione l'indirizzo
di questa.
Saluti,
    Mardy

 l'indirizzo della struttura.
ok, grazie
Kronos
-- 
Home: 
http://kronoz.tsx.org
Non sempre quello che viene dopo e' progresso.
Alessandro Manzoni
Newsgroup: it.comp.lang.c
Titolo: i listati dei programmi

Allora: ci sono parecchi siti che mettono a disposizione tutorial e source
code, sia in italia che all'estero. Per l'italia ti consiglio i soliti
stra-noti 
gpi.infomedia.it
 e 
www.programmazione.it
Esistono anche molti altri siti più piccoli ma comunque forniti. Ti
consiglio di vedere nella sezione links dei siti che ti ho scritto. Per i
siti in inglese...be! non c'è che l'imbarazzo della scelta: io sono sempre
su 
www.programmersheaven.com
, dove puoi trovare sourcecode di tutti i tipi e
per tutti gli argomenti (e linguaggi e sistemi operativi). Oppure se, anche
se è un po vecchio c'è 
www.hornet.org
, che tratta principalmente di demo
coding, ma c'è un po di tutti. Ah! C'è anche 
http://sourceforge.net
 che è
molto fornito (chiedi agli altri che ne sanno piu di me su sto sito, io fino
ad ora non ci ho cavato un ragno dal buco da li...-_-).
PS: vedi anche su 
www.redangel.it
Ciao, Dome

Qualcuno di voi mi sa dire in quali siti si possono scaricare listati di
programmi in C (preferibilmente, ma non necessariamente in italiano)?
Grazie
Luca


Reply-To: 
FUCK...@somthing.com
Followup-To: 

http://www.gnu.org
-- 
Real name: Fabrizio Chiarello		    | a Debian GNU/Linux "Woody" 
Nickname:  ponch			    | is running on Linux 2.4.2
e-mail:	   
ciav...@penguinpowered.com
      |     because Linux rulez 
web site:  
www.penguinpowered.com/~ciavareo
 |           !!!!!!!
GPG Key fingerprint = A10E 59BB 50A5 63C6 E6C8  4DF1 DE04 2BBF 5ED6 6A0D
Newsgroup: it.comp.lang.c
Titolo: *** %n in writable segment detected ***

Ciao a tutti!
Sto scrivendo un programma che, tra le tante cose, deve gestire un certo
traffico di dati via Socket (crea un Tunnel IPv6).
Ora come ora, visto che sto ancora sviluppando, ho lanciato il programma
con svariate opzioni di Debug, una delle quali mi stampa su stderr tutto
quello che viene ricevuto.
Orbene, provando a far passare una certa quantita' di dati, il programma
mi si e' appena schiantato. L'ultima cosa che vedo e':
ConnTrack: CTRL: 0010 ACK
6to4: 1500/1484 bytes
filter: Priority: 0
Flow Label: 0
Payload Length: 1440
Next Header: 6
Hop Limit: 59
Src Addr: 2a01:238:43b3:6c00:1::1
Dst Addr: 2001:470:1f0a:1d8b::2
Src Port: 22
Dst Port: 46429
Proto: 6 (tcp)
filter: 6to4
filter: 45 00 05 DC 00 00 40 00 FB 29 C2 25 D8 42 50 1E         E . . . .
 @ . . ) . % .0 B P .
filter: 50 F6 3E 7C 60 00 00 00 05 A0 06 3B 2A 01 02 38         P . > | `
 . . . . . ; * . . 8
filter: 43 B3 6C 00 00 01 00 00 00 00 00 01 20 01 04 70         C . l . .
 . . . . . .   . . p
filter: 1F 0A 1D 8B 00 00 00 00 00 00 00 02 00 16 B5 5D         . . . . .
 . . . . . . . . . ]
filter: 17 B9 A0 4F 6C 86 52 56 80 10 01 07 F2 B0 00 00         . . . O l
 R V . . . . . . . .
filter: 01 01 08 0A 03 0F 92 0F 06 1E 62 54 18 6F BE 12         . . . . .
 . . . . b T . o . .
filter: 70 D8 BF D8 D1 06 50 79 9C 58 28 3F 13 93 C9 A7         p . . . .
 P y . X ( ? . . . .
filter: DC 6B 17 D8 38 59 0D 74 42 A4 32 5D C5 FF 63 09         . k . . 8
Y . t B . 2 ] . . c .
*** %n in writable segment detected ***
Aborted
Cosa vuol dire quel "%n in writable segment detected"?!?
Grazie
Luca Bertoncello
(
luca...@lucabert.de
)
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it


Non ne ho la più pallida idea, ma se ho capito bene, è un messaggio che arriva direttamente dalle glibc :-/
Ciao!
Newsgroup: it.comp.lang.c
Titolo: puntatori

Salve a tutti.
Ho difficoltà a comprendere bene l'uso dei puntatori a stringhe. Vedo che
l'uso di questo strumento si differenzia a seconda che si punti a numeri o a
stringhe.
Se c'è qualcuno che può essermi di aiuto, permetterete di andare avanti
nello studio del linguaggio.
Grazie tante
Fabio

 stringhe.
Si differenzia solo perché mentre un numero è un elemento, una stringa
sono tanti caratteri, qundi tanti elementi, quindi un array di
caratteri.
EMG

 wrote in message
37F7B2D5...@flashnet.it...


 Vorrei capire il perchč.
Anche questo č errato. Attorno a Fabio ci vogliono le virgolette, non le
parentesi graffe. Assegni al puntatore c un indirizzo che non fa parte
dell'array (l'indirizzo dell'elemento 10 che non esiste, arriva fino a
9). E poi ancora applichi erroneamente l'operatore * ad un valore invece
che ad un indirizzo (c[10] č un valore, o meglio lo sarebbe se c fosse
un array con almeno 11 elementi).
Un consiglio: ristudiati i capitoli sugli array e sui puntatori. Magari
usando il K&R seconda edizione.
EMG

you wrote :
#> Vedo che
#> l'uso di questo strumento si differenzia a seconda che si punti a numeri o a
#> stringhe.
#Si differenzia solo perché mentre un numero č un elemento, una stringa
#sono tanti caratteri, qundi tanti elementi, quindi un array di
#caratteri.
Cioe', in fin dei conti, non si differenzia, in quanto un puntatore
viene inteso come "puntatore-a-T" dove T e' un qualsiasi tipo
primitivo o creato dal programmatore.
Qualunque sia questo T, tutti i puntatori subiscono le stesse regole.
--------------------------------------------------------
* Andrea Laforgia        (
andrea_...@bigfoot.com
) *
--------------------------------------------------------

 #Si differenzia solo perché mentre un numero è un elemento, una stringa

Newsgroup: it.comp.lang.c
Titolo: lunghezza vettore ignota a priori

Salve,
ho win98 ed il dev c++.
A volte capita di impiegare un vettore la cui lunghezza dipenda da un
parametro che
 venga determinato in corso d'opera.
Ora io chiedo: in questo caso, posso dichiarare il vettore a metà codice,
anzichè all'inizio?
Oppure lo si dichiara lo stesso all'inizio, ma verrà creato, durante la
esecuzione, solo quando
 la lunghezza del vettore sia sta determinata ?
Ho provato a capirlo da solo. Al tale fine, ho realizzato il codice che
segua:
****************************************************************************
****
#include <stdio.h>
#include <stdlib.h>
main()
{
int N0, N1, v[N1], i;
N0=3;
for (i=0;i<3;i++)
{
    N0=N0*3;
}
N1=N0;
for (i=0;i<N1;i++)
{
    v[i]=i;
}
printf("%d",v[1]);
}
****************************************************************************
****
Non ci sono errori di compilazione, nè warning.
Però, eseguendolo, il windows, mi apre la finestra di errore e mi dice:
"questo programma ha
 eseguito una operazione non valida e sarà terminato".
allora ho provato a riscrivere lo stesso codice, spostando la dichiarazione
int v[N1]
dall'inizio del programma,
a metà del codice, appena dopo N1 sia stato ricavato.
Ecco il neocodice:
****************************************************************************
****
#include <stdio.h>
#include <stdlib.h>
main()
{
int N0=3, N1, i;
for (i=0;i<3;i++)
{
    N0=N0*3;
}
N1=N0;
int v[N1];
for (i=0;i<N1;i++)
{
    v[i]=i;
}
printf("%d\n",v[1]);
}
****************************************************************************
****
Ora il programma funziona correttamente.
Pertanto io deduco che la sola maniera di fare funzionare i programmi dove
la lunghezza del
vettore sia determinata in real time, sia di dichiarare il vettore non
all'inizio, ma a metà codice, ppen dopo che l su lunghezz è stat ricavta.
E corretto ciò?
Ci sono le altre maniere di agire?
E' scandaloso dichiarare un vettore a metà codice, o in genere, in questi
casi, si fa, e nessuno storce la bocca?
Grazie,
adriano meis

 casi, si fa, e nessuno storce la bocca?
Onestamente non l'ho mai visto fare. Mi sembra strano che si POSSA fare.
E.


Eppure si puo'  (== e' sintaticamente corretto secondo lo standard).
E'  pero'  comodo, specie in presenza di codici complessi,  di 
raggruppare le dichiarazioni in modo da avere un'  unica sezione che 
funga da "dizionario"  per decifrare il tipo dati delle variabili.
Cio'  non toglie che se per esempio ho bisogno di un array "di blocco", 
   lo dichiaro solo all'  inizio del blocco, indifferentemente da dove 
questo si trovi nel codice.
Giorgio

 ho win98 ed il dev c++.
chee?!?!
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

mi ricordo male io o la dichiarazione statica di un array si fa:
<tipo> <nome> [<costante>]
???
Newsgroup: it.comp.lang.c
Titolo: 2 variabili in una cella di un vettore

Devo mettere in un vettore (vettore[max]), 2 variabili y e x.
es:
 [(1,2)(2,3)(6,8)(10,1)]
Si può, come?


wrote:

Dichiarati un array di strutture. Es...
   #include <stdio.h>
   #include <assert.h>
   #define MAX 100
   typedef struct PUNTO
   {
     int x,y;
   } Punto;
   Punt vettore[MAX];
   int num_punti;
   void AggiungiPunto(int x,int y)
   {
     assert(num_punti < MAX);
     vettore[num_punti].x = x;
     vettore[num_punti].y = y;
     num_punti++;
   }
   void StampaVettore(void)
   {
     int i;
     printf("Sono presenti %i punti:\n",num_punti);
     for (i=0; i<num_punti; i++)
     {
       printf("  (%i,%i)\n",vettore[i].x,vettore[i].y);
     }
   }
   int main()
   {
     AggiungiPunto(6,5);
     AggiungiPunto(0,2);
     AggiungiPunto(65,2);
     StampaVettore();
     return 0;
   }
HTH
Andrea
--
Andrea Griffini, Programmer
http://www.netservers.com/~agriff

 scripsit:

Sì, dipende da come hai dichiarato "vettore": puoi dichiararlo come
struct avente due campi per contenere x e y.
-- 
Saluti,
    Mardy
http://www.interlingua.com


Non puoi usare una matrice?
Altrimenti puoi provare cosě: usi un tipo di dati + lungo X memorizzare due
variabili piů piccole. Questo codice sembra funzionare
/****** START OF CODE ***********/
#include <stdio.h>
#define MAX           10
#define BITS_PER_BYTE  8 /* La dimensione di 1 byte puň variare */
typedef unsigned short us;
typedef unsigned long  ul;
void get(ul  cell, us *v1, us *v2);
void put(ul *cell, us  v1, us  v2);
ul  vett[MAX];
us  high, low;
int i;
int main(void)  {
   /* Riempimento dell'array */
   for (i = 0; i < MAX; i++) {
      printf("\nInserisci i due valori da inserire: ");
      scanf("%hu %hu", &high, &low); /* %hu = unsigned short, se non sbaglio
*/
      put(&vett[i], high, low);
   }
   /* Ristampo il contenuto dell'array */
   for (i = 0; i < MAX; i++) {
      get(vett[i], &high, &low);
      printf("\ni = %i; vett[%i] = %U; high = %u; low = %u", i, i, vett[i],
high, low);
   }
   return 0;
}
void get(ul buf, us *v1, us*v2) {
   *v1 = buf >> (sizeof(short) * BITS_PER_BYTE);
   *v2 = buf; /* I bit superiori vengono tagliati */
}
void put(ul *buf, us v1, us v2) {
   *buf = v2;
   *buf += v1 << (sizeof(short) * BITS_PER_BYTE);
}
/****** END OF CODE ***********/
Perň č un metodo poco ortodosso, perchč la dimensione di short/int/long puň
variare tra vari sistemi. A me ad esempio uno short č 2 byte, mentre int e
long sono 4.
Cmq il concetto del codice č questo (parlo per la mia macchina): un long č
composto da 32 bit, mentre uno short da 16. Quindi in un long posso
memorizzare 2 short, uno nei 2 byte superiori e uno nei 2 inferiori. Ho
cercato di fare cosě e -A ME- funziona, ma ripeto non so se č _giusto_ e
molto probabilmente i + esperti te lo sconsiglieranno. La matrice secondo me
č la soluzione migliore. Oppure un array di struct.
BlackDemon

 variabili più piccole. Questo codice sembra funzionare
...mi sembra un po' complesso da gestire, se devo rielaborare i dati
memorizzati mi sa che mi incasino.

 ...mi sembra un po' complesso da gestire, se devo rielaborare i dati
Mah!
BlackDemon
Newsgroup: it.comp.lang.c
Titolo: problemi con malloc

Ciao,
riporto un frammento di codice che mi sta facendo impazzire!
typedef struct
{
  int newsockfd;
} argthread;
main()
{
  argthread * * myarg;
for (int i=0;;i++)
{
  myarg[i] = (argthread*) malloc(sizeof(argthread));
  myarg[i]->newsockfd = newsockfd;
  ...........
  }
}
Dunque, il tutto funziona perfettamente se non aggiungo nel main prima
del for:
map * m1 = new map;
delete(m1);
map e` una mia classe, e` solo una prova poi ho intenzione di trasformare
la struttura "argthread" in classe.
Sbaglio il malloc o cosa?
Cosa comporta il fatto che istanzi una classe? sto` compilando con g++
sotto linux. nessun errore di compilazione, solo un bel core. Notare che
basta commentare la riga del malloc e magicamente tutto funziona.
Ciao ciao

mmmhhh, sto` allocando memoria solo per la struttura ma non per l'array di
puntatori, come faccio a creare un array di un numero indefinito di
elementi e aggiungere elementi all'occorrenza?

 elementi e aggiungere elementi all'occorrenza?
Credo che la risposta stia nelle liste concatenate. L'array è una struttura
statica che in questo caso non è la soluzione migliore. Usare realloc non mi
sembra proprio il caso.

 ha scritto:
